home *** CD-ROM | disk | FTP | other *** search
/ Download Now 8 / Download Now V8.iso / Program / InternetTools / ApacheWebServer1.3.6 / apache_1_3_6_win32.exe / _SETUP.1 / CHANGES < prev    next >
Encoding:
Text File  |  1999-03-22  |  288.1 KB  |  6,292 lines

  1. Changes with Apache 1.3.6
  2.  
  3.   *) Removed new PassAllEnv code due to DSO problems. [Lars Eilebrecht]
  4.  
  5. Changes with Apache 1.3.5 [not released]
  6.  
  7.   *) M_INVALID needed a value within the scope of METHODS so that unknown
  8.      methods can be access controlled.  [Roy Fielding] PR#3821
  9.  
  10.   *) Added PassAllEnv; makes server's entire environment available
  11.      to CGIs and SSIs executed within directive's scope.  [Ken Coar]
  12.  
  13.   *) ap_uuencode() always added two trailing '='s and encoding of
  14.      8 bit characters on a machine with signed char may produced
  15.      incorrect results. Additionally ap_uuencode() should now
  16.      work correctly on EBCDIC platforms.
  17.      [Ronald TschalΣr <ronald@innovation.ch>] PR#3411
  18.  
  19.   *) WIN32: Binary installer now runs the configuration DLL before
  20.      the reboot prompt (which is only given if MSVCRT.DLL system
  21.      DLL is new or updated). This should avoid the configuration
  22.      directory being empty after installation. [Paul Sutton]
  23.      PR#3767, 3800, 3827, 3850, 3900, 3953, 3988
  24.  
  25.   *) WIN32: Binary installer now creates Start menu options to start
  26.      and stop Apache as a console application and to uninstall
  27.      the Apache service on NT. [Paul Sutton] PR#3741
  28.  
  29.   *) WIN32: Apache.exe now contains an icon. [Paul Sutton]
  30.  
  31.   *) PORT: Switch back to using fcntl() locking on Linux -- instabilities
  32.      have been reported with flock() locking (probably related to kernel
  33.      version).  [Dean Gaudet] PR#2723, 3531
  34.  
  35.   *) Using APACI, the main config file (usually httpd.conf) was
  36.      not being adjusted as $(TARGET).conf. [Wilfredo Sanchez
  37.      <wsanchez@apple.com>]
  38.  
  39.   *) PORT: AIX does not require the SHARED_CODE "hack"
  40.      [Ryan Bloom <rbb@raleigh.ibm.com>]
  41.  
  42.   *) Set-Cookie headers were being doubled up for some CGIs by the O(n^2)
  43.      avoidance code added in 1.3.3.
  44.      [Dean Gaudet, Jeff Lewis <lewis@stanford.edu>] PR#3872
  45.  
  46.   *) ap_isxdigit was somehow neglected when adding the ap_isfoo() macros
  47.      for 8-bit safeness.  [Dean Gaudet]
  48.  
  49.   *) PORT: Use -fPIC instead of -fpic on Solaris and SunOS for compiling DSOs
  50.      because SPARCs have a small machine-specific maximum size for the Global
  51.      Offset Table which is often exceeded when compiling one of the larger
  52.      third-party modules with Apache. [Peter Urban <Peter.Urban@epfl.ch>] PR#3977
  53.  
  54.   *) Move the directive `ExtendedStatus' in httpd.conf-dist-win _after_ the
  55.      DSO/DLL section because it's a directive from mod_status and isn't
  56.      available before the DLL of mod_status is loaded.
  57.      [Martin POESCHL <mpoeschl@gmx.net>] PR#3936
  58.  
  59.   *) SECURITY: Fix a bug in the calculation of the buffer size for the line 
  60.      continuation facility in Apache's configuration files which could 
  61.      lead to a buffer overflow situation.
  62.      [Thomas Devanneaux <Thomas.Devanneaux@enst.fr>] PR#3617
  63.  
  64.   *) Make documentation and error messages of APACI's --activate-module=FILE 
  65.      option more clear. [Jan Wolter <janc@wwnet.net>] PR#3995
  66.  
  67.   *) Fix the gcc version check (for enabling the `inline' facility) to 
  68.      really support all future gcc versions >= 2.7 until we know more.
  69.      [John Tobey <jtobey@banta-im.com>] PR#3983
  70.  
  71.   *) Let APACI's configure script correctly complain for unknown --enable-XXX
  72.      and --disable-XXX options. [Ralf S. Engelschall] PR#3958
  73.  
  74.   *) Link the shared core bootstrap program (``Rule SHARED_CORE=yes'') also
  75.      against libap.a and use its ap_snprintf() instead of sprintf() to avoid
  76.      possible buffer overflows. [Ralf S. Engelschall]
  77.  
  78.   *) Remove no longer used non-API function ap_single_module_init().
  79.      [Ralf S. Engelschall]
  80.  
  81.   *) Add Apple's Mac OS X Server Layout "Rhapsody" to config.layout.
  82.      [Wilfredo Sanchez]
  83.  
  84.   *) Add cgidir, htdocsdir, iconsdir variables to Makefile.tmpl in order
  85.      to make platform installations easier.  [Wilfredo Sanchez]
  86.  
  87.   *) In configure, do not append the target name to the directory path if
  88.      the path already contains "apache".  [Ralf S. Engelschall]
  89.  
  90.   *) SIGPIPE is now ignored by the server core.  The request write routines
  91.      (ap_rputc, ap_rputs, ap_rvputs, ap_rwrite, ap_rprintf, ap_rflush) now
  92.      correctly check for output errors and mark the connection as aborted.
  93.      Replaced many direct (unchecked) calls to ap_b* routines with the
  94.      analogous ap_r* calls.  [Roy Fielding]
  95.  
  96.   *) Enhanced mod_rewrite's mapfile handling: The in-core cache for text and
  97.      DBM format mapfiles now uses a 4-way hash table with LRU functionality.
  98.      Furthermore map lookups for non-existent keys are now cached as well.
  99.      Additionally "txt" maps are now parsed with simple string functions
  100.      instead of using ap_pregcomp(). As a side effect a bug that prevented
  101.      the usage of keys containing the "," character was fixed.
  102.      The changes drastically improve the performance when large rewrite maps
  103.      are in use.
  104.      [Michael van Elst <mlelstv@serpens.swb.de>, Lars Eilebrecht] PR#3160
  105.  
  106.   *) Added ap_sub_req_method_uri() for doing a subrequest with a method
  107.      other than GET, and const'd the definition of method in request_rec.
  108.      [Greg Stein]
  109.  
  110.   *) Use proper pid_t type for saving PIDs in alloc.c.  [John Bley]
  111.  
  112.   *) Replaced use of WIN32 define with HAVE_DRIVE_LETTERS to indicate
  113.      when the OS allows a DOS drive letter within pathnames.  [Brian Havard]
  114.  
  115.   *) Add %V to mod_log_config, this logs the hostname according to the
  116.      UseCanonicalName setting (this is the pre-1.3.4 behaviour of
  117.      %v).  Useful for mass vhosting.  [Tony Finch <dot@dotat.at>]
  118.  
  119.   *) Add support for \n and \t to mod_log_config, can be used to produce
  120.      more reliable logs with multiline entries.  [Tony Finch <dot@dotat.at>]
  121.  
  122.   *) Fixed a few compiler nits.  [John Bley <jbb6@acpub.duke.edu>]
  123.  
  124.   *) Added informative error messages for failed munmap() and fseek() calls
  125.      in http_core.c. [John Bley, Roy Fielding]
  126.  
  127.   *) Added some informative error messages for some failed malloc()
  128.      calls. [John Bley <jbb6@acpub.duke.edu>, Jim Jagielski]
  129.  
  130.   *) OS/2 ap_os_canonical_filename()'s behaviour is improved: ap_assert()
  131.      is removed. This allows <Directory proxy:*> directives to work and
  132.      prevents invalid requests from killing the process.
  133.      [Brian Havard <brianh@kheldar.apana.org.au>]
  134.  
  135.   *) Reorganised FAQ document.
  136.      [Joshua Slive <slive@finance.commerce.ubc.ca>] PR#2497
  137.  
  138.   *) src/support/: The ApacheBench benchmark program was overhauled by
  139.      David N. Welton: you can now have it generate an HTML TABLE, presumably
  140.      for integration into other HTML sources. David updated the ab man page
  141.      as well and added some missing descriptions. Thanks!
  142.      [David N. Welton <davidw@prosa.it>]
  143.  
  144.   *) Win32: The filename validity checker now allows filenames containing
  145.      characters in the range 0x80 to 0xff (for example accented characters).
  146.      [Paul Sutton] PR#3890
  147.  
  148.   *) Added conditional logging based upon environment variables to
  149.      mod_log_config.  mod_log_referer and mod_log_agent
  150.      are now deprecated.  [Ken Coar]
  151.  
  152.   *) Allow apache acting as a proxy server to relay the real
  153.      reason of a failure to a client rather than the "internal
  154.      server error" it does currently. The general exposure mechanism
  155.      can be triggered by any module by setting the "verbose-error-to"
  156.      note to "*"; this allows more than just proxy errors to be exposed.
  157.      [Cliff Skolnick, Roy Fielding, Martin Kraemer] Related to PR#3455, 4086
  158.  
  159.   *) Moved man pages for ab and apachectrl to section 8.
  160.      [Wilfredo Sanchez, Roy Fielding]
  161.  
  162.   *) Added -S option to install.sh so that options can be passed to
  163.      strip on some platforms. [Ralf S. Engelschall, Wilfredo Sanchez]
  164.  
  165.   *) Tweak modules Makefile generated by Configure so that it handles
  166.      the test case of no modules being selected. [chaz@reliant.com]
  167.  
  168.   *) Added a <LimitExcept method ...> sectioning directive that allows
  169.      the user to assign authentication control to any HTTP method that
  170.      is *not* given in the argument list; i.e., the logical negation
  171.      of the <Limit> directive.  This is particularly useful for controlling
  172.      access on methods unknown to the Apache core, but perhaps known by
  173.      some module or CGI script. [Roy Fielding, Tony Finch]
  174.  
  175.   *) Prevent apachectl from complaining if the PIDFILE exists but
  176.      does not contain a process id, as might occur if the server is
  177.      being rapidly restarted. [Wilfredo Sanchez]
  178.  
  179.   *) Win32: Add global symbols missing from ApacheCore.def. [Carl Olsen]
  180.  
  181.   *) Entity tag comparisons for If-Match and If-None-Match were not being
  182.      performed correctly -- weak tags might cause false positives.  Also,
  183.      strong comparison wasn't properly enforced in all cases.
  184.      [Roy Fielding, Ken Coar, Dean Gaudet] PR#2065, 3657
  185.  
  186.   *) OS/2: Supply OS/2 error code instead of errno on semaphore errors.
  187.      [Brian Havard]
  188.  
  189.   *) Work around a bug in Lynx regarding its sending "Negotiate: trans"
  190.      even though it doesn't understand TCN.  [Koen Holtman, Roy Fielding]
  191.  
  192.   *) Added ap_size_list_item(), ap_get_list_item(), and ap_find_list_item()
  193.      to util.c for parsing an HTTP header field value to extract the next
  194.      list item, taking into account the possible presence of nested comments,
  195.      quoted-pairs, and quoted-strings. ap_get_list_item() also removes
  196.      insignificant whitespace and lowercases non-quoted tokens.
  197.      [Roy Fielding] PR#2065
  198.  
  199.   *) proxy: The various calls to ap_proxyerror() can return HTTP/1.1 status
  200.      code different from 500. This allows the proxy to, e.g., return
  201.      "403 Forbidden" for ProxyBlock'ed URL's. [Martin Kraemer] Related to PR#3455
  202.  
  203.   *) Fix ordering of language variants for the case where the traditional
  204.      negotiation algorithm is being used with multiple language variants
  205.      and no Accept-Language. [James Treacy <treacy@debian.org>] PR#3299, 3688
  206.  
  207.   *) Do not round the TCN quality calculation to 5 decimal places,
  208.      unlike RFC 2296, because the calculation might need 12 decimal places
  209.      to get the right result.  [Roy Fielding]
  210.  
  211.   *) Remove unused code to disable transparent negotiation when
  212.      negotiating on encoding only, as we now handle encoding too
  213.      (though this is nonstandard for TCN), remove charset=ISO-8859-1
  214.      fiddle from the fiddle-averse RVSA comparison, and fix bugs in
  215.      some debugging statements within mod_negotiation. [Koen Holtman]
  216.  
  217.   *) Fixed a rare memory corruption possibility in mod_dir if the index
  218.      file is negotiable and no acceptable variant can be found.
  219.      [Dean Gaudet, Roy Fielding, Martin Kraemer]
  220.  
  221.   *) Win32: Add new config directive, ScriptInterpreterSource, to enable
  222.      searching the Win32 registry for script interpreters.
  223.      [Bill Stoddard]
  224.  
  225.   *) Win32: The compiled-in default filename for the error log is now
  226.      error.log, which matches the default in the distributed httpd.conf.
  227.      [Paul Sutton]
  228.  
  229.   *) Win32: Any error messages from -i or -u command line options are now
  230.      displayed on the console output rather than sent to the error log.
  231.      Also the "Running Apache..." message is not output unless Apache is
  232.      going to serve requests. [Paul Sutton]
  233.  
  234.   *) Rework the MD5 authentication scheme to use FreeBSD's algorithm,
  235.      and use a private significator ('$apr1$') to mark passwords as
  236.      being smashed with our own algorithm.  Also abstract the password
  237.      checking into a new ap_validate_password() routine.  [Ken Coar]
  238.  
  239.   *) Win32: The filename validity checker now allows "COM" but refuses 
  240.      access to "COM1" through "COM4". This allows filenames such
  241.      as "com.name" to be served. [Paul Sutton] PR#3769.
  242.  
  243.   *) BS2000: Adapt to the new ufork() system call interface which will
  244.      make subtasking easier on the OSD/POSIX mainframe environment.
  245.      [Martin Kraemer]
  246.  
  247.   *) Add a compatibility define for escape_uri() -> ap_escape_uri() to
  248.      ap_compat.h. [David White <david@persimmon.com>] PR#3725
  249.  
  250.   *) Make NDBM file suffix determination for mod_rewrite more accurate, i.e.
  251.      use `.db' instead of `.pag' not only for FreeBSD, but also when
  252.      the NDBM library looks like Berkeley-DB based.
  253.      [Ralf S. Engelschall] PR#3773
  254.  
  255.   *) Add ability to handle DES or MD5 authentication passwords.
  256.      [Ryan Bloom <rbb@Raleigh.IBM.Com>]
  257.  
  258.   *) Fix O(n^2) memory consumption in mod_speling.  [Dean Gaudet]
  259.  
  260.   *) SECURITY: Avoid some buffer overflow problems when escaping
  261.      quoted strings.  (This overflow was on the heap and we believe
  262.      impossible to exploit.)  [Rick Perry <perry@ece.vill.edu>]
  263.  
  264.   *) Let src/Configure be aware of CFLAGS options starting with plus
  265.      signs as it's the case for the HP/UX compiler.
  266.      [Doug Yatcilla <yatcilda@umdnj.edu>] PR#3681
  267.  
  268.   *) Remove the hard-wire of TAR=tar (we now check for gtar and gnutar first)
  269.      and check to see if the tar we wind up with supports '-h'.
  270.      [Jim Jagielski] PR#3671
  271.  
  272.   *) A consistant and conservative style for all shell scripts has been
  273.      implemented. Basically, all shell string tests use the traditional
  274.      hack of 'if [ "x$var" != "x" ]' or 'if [ "x$var" = "xstring" ]'
  275.      to protect against bare null variable strings (ie: wrapping both
  276.      sides with double quotes and prepending 'x'). 'x' was chosen
  277.      because it's more universal and hopefully easier for old shell
  278.      prgrammers, as well as being easier to search for in 'vi' (/x\$) :)
  279.      [Jim Jagielski]
  280.  
  281.   *) The status module now prints out both the main server generation as
  282.      well as the generation of each process. Also, the vhost info is
  283.      printed with '?notable'. [Jim Jagielski]
  284.  
  285.   *) Move src/main/md5c.c to src/ap/ap_md5c.c; it's httpd-neutral
  286.      and this makes its functions available to things in src/support.
  287.      [Ken Coar]
  288.  
  289. Changes with Apache 1.3.4
  290.  
  291.   *) Renamed macros status_drops_connection to ap_status_drops_connection
  292.      and vestigial scan_script_header to ap_scan_script_header_err,
  293.      mostly for aesthetic reasons. [Roy Fielding]
  294.  
  295.   *) The query switch "httpd -S" didn't exit after showing the
  296.      vhost settings. That was inconsistent with the other query functions.
  297.      [Martin Kraemer]
  298.  
  299.   *) Moved the MODULE_MAGIC_COOKIE from before the versions and
  300.      filename to the end of the STANDARD_MODULE_STUFF.  Its
  301.      presence at the beginning prevented reporting of the filename
  302.      for modules compiled before 1 January 1999.  [Ken Coar]
  303.  
  304.   *) SECURITY: ap_os_is_filename_valid() has been added to Win32
  305.      to detect and prevent access to special DOS device file names.
  306.      [Paul Sutton, Ken Parzygnat]
  307.      
  308.   *) WIN32: Created new makefiles Makefile_win32.txt (normal build)
  309.      and Makefile_win32_debug.txt (debug build) that work on Win95.
  310.      Run each of the following from the src directory:
  311.         nmake /f Makefile_win32.txt           # compiles normal build
  312.         nmake /f Makefile_win32.txt install   # compiles and installs
  313.         nmake /f Makefile_win32.txt clean     # removes compiled junk
  314.         nmake /f Makefile_win32_debug.txt     # compiles debug build
  315.         nmake /f Makefile_win32_debug.txt install
  316.         nmake /f Makefile_win32_debug.txt clean
  317.      [Roy Fielding]
  318.  
  319.   *) Added binbuild.sh and findprg.sh helpers to make it easier for us
  320.      to build binary distributions. [Lars Eilebrecht]
  321.  
  322.   *) IndexOptions SuppressColumnSorting only turned off making
  323.      the column headers anchors; you could still change the display
  324.      order by manually adding a '?N=A' or similar query string to the
  325.      URL.  Now SuppressColumnSorting locks in the sort order so
  326.      it can't be overridden this way.  [Ken Coar]
  327.  
  328.   *) Added IndexOrderDefault directive to supply a default sort order
  329.      for FancyIndexed directory listings.  [Ken Coar] PR#1699
  330.  
  331.   *) Change the ap_assert macro to a variant that works on all platforms.
  332.      [Richard Prinz <richard.prinz@cso.net>] PR#2575
  333.  
  334.   *) Make sure under ELF-based NetBSD (now) and OpenBSD (future) we don't
  335.      search for an underscore on dlsym() (as it's already the case
  336.      for FreeBSD 3.0). [Todd Vierling <tv@pobox.com>] PR#2462
  337.   
  338.   *) Small fix for mod_env.html: The module was documented as to be _not_
  339.      compiled into Apache per default, although it _IS_ compiled into 
  340.      Apache per default. [Sim Harbert <sim@mindspring.com>] PR#3572
  341.  
  342.   *) Instead of fixing a bug in the generation procedure for config.status (a
  343.      backslash was missing) we remove the bug together with it's complete
  344.      context because the special cases of the past can now no longer occur
  345.      because of the recent magic for the --with-layout default.
  346.      [Ralf S. Engelschall] PR#3590
  347.  
  348.   *) Make top-level Makefile aware of a parallel build procedures (make -j) by
  349.      making sure the src/support/ tools are _forced_ to be build last (they
  350.      depend on other libraries).
  351.      [Markus Theissinger <markus.theissinger@gmx.de>]
  352.  
  353.   *) Fix installation procedure: Now that os-inline.c is actually used (a
  354.      recently fixed bug prevented this) we need to also install os-include.c
  355.      in addition to os.h into the PREFIX/include/ location or building of
  356.      module DSOs with APXS fails. [Ralf S. Engelschall] PR#3527
  357.  
  358.   *) Added MODULE_MAGIC_COOKIE as the first field in a module structure to
  359.      allow us to distinguish between a garbled DSO (or even a file which isn't
  360.      an Apache module DSO at all) and a DSO which doesn't match the current
  361.      Apache API. [Ralf S. Engelschall] PR#3152
  362.  
  363.   *) Two minor enhancements to mod_rewrite: First RewriteRule now also
  364.      supports the ``nocase|NC'' flag (as RewriteCond already does for ages) to
  365.      match case insensitive (this especially avoids nasty patterns like
  366.      `[tT][eE][sS][tT]'). Second two additional internal map functions
  367.      `escape' and `unescape' were added which can be used to escape/unescape
  368.      to/from hex-encodings in URLs parts (this is especially useful in
  369.      combination with map lookups). 
  370.      [Magnus Bodin, Ian Kallen, Ralf S. Engelschall]
  371.  
  372.   *) Renamed the macro escape_uri() to ap_escape_uri() which was
  373.      forgotten (because it was a macro) in the symbol renaming process.
  374.      [Ralf S. Engelschall]
  375.  
  376.   *) Fix some inconsistencies related to the scopes of directives. The only
  377.      user visible change is that the directives `UseCanonicalName' and
  378.      `ContentDigest' now use the (more correct) `Options' scope instead of
  379.      (less correct) `AuthConfig' scope.  [Ralf S. Engelschall]
  380.  
  381.   *) Using DSO, the Server token was being mangled. Specifically, the
  382.      module's token was being added first before the Apache token. This
  383.      has been fixed. [Jim Jagielski]
  384.  
  385.   *) Major overhaul of mod_negotiation.c, part 2.
  386.      - properly handle "identity" within Accept-Encoding.
  387.      - allow encoded variants in RVSA negotiation and let them appear in
  388.        the Alternates field using the non-standard "encoding" tag-list.
  389.      - fixed both negotiation algorithms so that an explicitly accepted
  390.        encoding is preferred over no encoding if "identity" is not
  391.        included within Accept-Encoding.
  392.      - added ap_array_pstrcat() to alloc.c for efficient concatenation
  393.        of large substring sequences.
  394.      - replaced O(n^2) memory hogs in mod_negotiation with ap_array_pstrcat.
  395.      [Roy Fielding]
  396.  
  397.   *) Major overhaul of mod_negotiation.c, part 1.
  398.      - cleanups to mod_negotiation comments and code structure
  399.      - made compliant with HTTP/1.1 proposed standard (rfc2068) and added
  400.        support for everything in the upcoming HTTP/1.1
  401.        revision (draft-ietf-http-v11-spec-rev-06.txt).
  402.          - language tag matching also handles tags with more than 2
  403.            levels like x-y-z
  404.          - empty Accept, Accept-Language, Accept-Charset headers are
  405.            processed correctly; previously an empty header would make all
  406.            values acceptable instead of unacceptable.
  407.          - allowed for q values in Accept-Encoding
  408.      - added support for transparent content negotiation (rfc2295 and
  409.        rfc2296) (though we do not implement all features in these drafts,
  410.        e.g. no feature negotiation).  Removed old experimental version.
  411.      - implemented 'structured entity tags' for better cache correctness
  412.        (structured entity tags ensure that caches which can deal with Vary
  413.        will (eventually) be updated if the set of variants on the server
  414.        is changed)
  415.          - this involved adding a vlist_validator element to request_rec
  416.          - this involved adding the ap_make_etag() function to the global API
  417.      - modified guessing of charsets used by Apache negotiation algorithm 
  418.        to guess 'no charset' if the variant is not a text/* type
  419.      - added code to sort multiviews variants into a canonical order so that
  420.        negotiation results are consistent across backup/restores and mirrors
  421.      - removed possibility of a type map file resolving to another type map
  422.        file as its best variant
  423.      [Koen Holtman, Roy Fielding, Lars Eilebrecht] PR#3451, 3299, 1987
  424.  
  425.   *) RFC2396 allows the syntax http://host:/path (with no port number)
  426.      but the proxy disallowed it (ap_proxy_canon_netloc()).
  427.      [David Kristol <dmk@bell-labs.com>] PR#3530
  428.  
  429.   *) When modules update/modify the file name in the configfile_t structure,
  430.      syntax errors will report the updated name, not the original one.
  431.      [Fabien Coelho <coelho@cri.ensmp.fr>] PR#3573
  432.  
  433.   *) Correct some filename case assumptions from WIN32 to
  434.      CASE_BLIND_FILESYSTEM.  [Brian Havard <brianh@kheldar.apana.org.au>]
  435.  
  436.   *) For %v log ServerName regardless of the UseCanonicalName
  437.      setting (similarly for %p).  [Dean Gaudet]
  438.  
  439.   *) Configure was initializing the variables $OSDIR, $INCDIR and $SHELL
  440.      rather late (too late for some invocations of TestCompile).
  441.      This improves the make environment available to TestCompile and
  442.      the *.module scripts. [Martin Kraemer]
  443.  
  444.   *) The hashbang emulation code in ap_execve.c would interpret
  445.      #!/hashbang/scripts correctly, but failed to fall back to a
  446.      standard shell for scripts which did NOT start with #!
  447.      Now SHELL_PATH is started in these cases. [Martin Kraemer]
  448.  
  449.   *) PORT: Added the Cyberguard V2 port [Richard Stagg <stagg@lentil.org>]
  450.      PR#3336
  451.  
  452.   *) Update APXS manual page: some -q option arguments were missing
  453.      and another was incorrect. [Mark Anderson <mda@discerning.com>] PR#3553
  454.  
  455.   *) Cleanup the command line options: `-?' was documented to show
  456.      the usage list but does it with an error because `?' is not a valid
  457.      command. OTOH a lot of users expect `-h' to print such a usage list and
  458.      instead are annoyed for ages by our huge unreadable list of directives.
  459.      So we now changed the command line options this way:
  460.      1. `-L' => `-R' 
  461.         Intent: we need `-L' to be free, and `-R' for the DSO run-time path is
  462.         very similar to the popular linker option.
  463.      2. `-h' => `-L'
  464.         Intent: while -l gives the small list of modules, -L now gives the
  465.         large list of directives implemented by these modules.  This is also
  466.         consistent with -v (short version info) and -V (large version info).
  467.      3. `-?' => `-h' 
  468.         Intent: it's now the expected option ;-)
  469.      The manual page was adjusted accordingly. 
  470.      [Ralf S. Engelschall] PR#2714
  471.  
  472.   *) Fixed problem of fclose() on an unopened file in suexec if LOG_EXEC
  473.      wasn't defined.  [Rick Franchuk <rickf@transpect.net>]
  474.  
  475.   *) Removed recently introduced bugs and disfigurements in APACI:
  476.      o fixed argument line processing: using $args was broken: It was not
  477.        initialized and using args="$args $apc_option" and even args="$args
  478.        \"$apc_option\"" fails in the second processing round for any arguments
  479.        containing whitespaces. The only correct way is to use the construct
  480.        "$@" (but not possible here) or iterate _both_ times over the implicit
  481.        argument line (no argument to for-loop) which is what we now use.
  482.      o make --with-layout=Apache the default without creating
  483.        redundancy (copying the --with-layout block in the argument parsing
  484.        loop).  We achieve this by using the "$@" construct together with the
  485.        `set' command to prepend --with-layout=Apache to the command line in
  486.        case --with-layout is not used.
  487.      o fixed auto-suffix handling now that config.layout exists.
  488.        Paths which are auto-suffixed are marked with a trailing plus sign in
  489.        config.layout and every path now can be marked this way (not only the
  490.        four paths for which we do it currently).  Additionally the suffix is
  491.        no longer a static one. Instead it's now `/<target>' where <target> is
  492.        the argument of the --target option or per default `httpd'.
  493.      o allow also tabs (and only spaces) where we match whitespaces
  494.      o various fixes and cleanups related to used shell coding style
  495.      o made Jim happy by replacing `Written by' with `Initially written by' ;-)
  496.      o trimmed output of --help to fit into 80 columns
  497.      [Ralf S. Engelschall]
  498.  
  499.   *) Added two new core API functions, ap_single_module_configure() and
  500.      ap_single_module_init(), which are now used by mod_so to configure a module
  501.      after loading. [Ralf S. Engelschall]
  502.  
  503.   *) PORT: Add defines for USE_FLOCK_SERIALIZED_ACCEPT and
  504.      SINGLE_LISTEN_UNSERIALIZED_ACCEPT to NetBSD/OpenBSD section
  505.      of ap_config.h to allow serialized accept for multiport listens.
  506.      [Roy Fielding, Curt Sampson] PR#3120
  507.  
  508.   *) PORT: Fixed a misplaced #endif for NetBSD/OpenBSD section
  509.      of ap_config.h that would skip several defines if DEFAULT_GROUP
  510.      was overridden. [Roy Fielding]
  511.  
  512.   *) PORT: The I86 version of DGUX has support for strncasecmp and 
  513.      strcasecmp, so allow it in ap_config.h. [Amiel Lee Yee] PR#3247
  514.  
  515.   *) Fix ordering of definitions in ap_config.h so that ap_inline is
  516.      defined before it might be used. [Victor Khimenko]
  517.  
  518.   *) PORT: Add Dynamic Shared Object (DSO) support for BSDI (v4.0).
  519.      [Tom Serkowski <tks@bsdi.com>] PR#3453
  520.  
  521.   *) Make generation of src/Configuration.apaci more robust: It failed to
  522.      differenciate between modules when one module name was a postfix of
  523.      another (e.g. cgi vs. fastcgi). We now check for mod_XXX, libXXX and even
  524.      just XXX (think about totally non-standard names like "apache_ssl", too).
  525.      [Ralf S. Engelschall] PR#3380
  526.  
  527.   *) In src/Configure remove the SERVER_SUBVERSION support (already deprecated
  528.      since 1.3b7) and make whitespace handling more robust (it failed horrible
  529.      when whitespaces were present in the arguments of -D options).
  530.      [Ralf S. Engelschall] PR#3240
  531.  
  532.   *) Add APACI --shadow=DIR variant (in addition to --shadow). This now first
  533.      creates an external package shadow tree in DIR before the local build
  534.      shadow tree is generated under DIR. This way one can have the extracted
  535.      Apache distribution tree read-only on NFS or CDROM and still build Apache
  536.      from these sources. An automatically triggered VPATH-like mechanism is
  537.      provided through the TOP variable, too.
  538.      [Ralf S. Engelschall, Wilfredo Sanchez <wsanchez@apple.com>]
  539.  
  540.   *) Fix negotiation so that a Vary response header is correctly 
  541.      generated when, for a particular dimension, variants only vary
  542.      in having or not having a value for that dimension. [Paul Sutton]
  543.  
  544.   *) Fix negotiation so that we prefer an encoded variant over an
  545.      unencoded variant if the user-agent explicitly says it can
  546.      accept that encoding. Previously we always preferred the unencoded
  547.      variant.
  548.      [Paul Ausbeck <paula@alumni.cse.ucsc.edu>, Paul Sutton] PR#3447
  549.  
  550.   *) Fix APXS tool: query variables LIBS_SHLIB and TARGET were not recognized
  551.      and the usage page was inconsistent with the functionality and manpage.
  552.      [Ralf S. Engelschall]
  553.  
  554.   *) Allow special options -Wc,xxx and -Wl,xxx on APXS compile/link command.
  555.      They can occur multiple times and their arguments (`xxx') are passed AS
  556.      IS to the compiler/linker command.  [Ralf S. Engelschall]
  557.  
  558.   *) Fixed possible (but harmless in practice) bug in the DBM lookup
  559.      procedure of mod_rewrite: very long keys were truncated.
  560.      [Ralf S. Engelschall]
  561.  
  562.   *) Added a generic --with-layout=[FILE:]ID option. ID here is a layout
  563.      identifier, currently "Apache" and "GNU" are pre-defined in the file
  564.      config.layout.  Custom layouts are possible by using FILE:ID as the
  565.      argument where the layout ID is taken from FILE.
  566.  
  567.      The config.layout file consists of <Layout ID>..</Layout> sections
  568.      where inside those sections "path_variable: path_value" pairs can be
  569.      specified. These lines are converted to path_variable='path_value'.
  570.  
  571.   *) Add a DefaultLanguage directive so that files missing a language
  572.      extension (e.g., .fr, .de) can be labelled as being some other
  573.      default language. DefaultLanguage can appear in <Directory> and 
  574.      <Files> containers as well as .htaccess files.  [Paul Sutton]
  575.      PR#1180
  576.  
  577.   *) Fix TARGET configuration when configuring and installing using
  578.      APACI configure. TARGET now defines the basename of the configuration
  579.      file, startup script, manual page, etc. log_error_core() now reports
  580.      the server binary name given by argv[0]. TARGET can now also be defined
  581.      with --target=TARGET parameter passed to APACI configure.
  582.      [Ralf Engelschall, Randy Terbush]
  583.  
  584.   *) mod_include.c:handle_perl() now properly tests for OPT_INCNOEXEC
  585.      rather than OPT_INCLUDES [Rainer Schoepf <schoepf@uni-mainz.de>]
  586.  
  587.   *) ap_md5_binary() was using sprintf() rather than a table lookup
  588.      to convert binary bytes to hex digits.
  589.      [Ronald TschalΣr <ronald@innovation.ch>] PR#3409
  590.  
  591.   *) Fix SEGV in TCN negotiation if no variants are acceptable.
  592.      [Martin Plechsmid <plechsmi@karlin.mff.cuni.cz>] PR#1987
  593.  
  594.   *) API: ap_exists_config_define() function is now "public" [Doug MacEachern]
  595.  
  596.   *) Fix documentation of `Action' directive: It can activate a CGI script
  597.      when either a handler or a MIME content type is triggered by the request.
  598.      [Andrew Pimlott <pimlott@math.harvard.edu>] PR#3340
  599.  
  600.   *) Document the `add' command of `dbmmanage' in `dbmmanage.1' manpage.
  601.      [David MacKenzie <djm@uu.net>] PR#3394
  602.  
  603.   *) Ignore a "ErrorDocument 401" directive with a full URL and write a
  604.      notice to the error log. It is not possible to send a 401 response
  605.      and a redirect at the same time.  [Lars Eilebrecht]
  606.  
  607.   *) Fallback to native compilers for IRIX-32 platform. It seems that
  608.      a gcc 2.8.1 compiled apache is logging client addresses with all
  609.      bits set (255.255.255.255). This is the second such problem caused
  610.      by gcc 2.8.1 compiler. The first being broken semaphore locking.
  611.      [Randy Terbush]
  612.  
  613.   *) Updated mime.types to reflect current Internet media types
  614.      and include a URL to the registry.
  615.      [Manoj Kasichainula, Roy Fielding] PR#2380, 2286, 2246
  616.  
  617.   *) SECURITY: Do a more complete check in mod_include to avoid 
  618.      an infinite loop of recursive SSI includes.  [Marc Slemko] PR#3323
  619.  
  620.   *) Add APACI --suexec-docroot and --suexec-logfile options which can be
  621.      used to set the document root directory (DOC_ROOT) and the suexec
  622.      logfile (LOG_EXEC), respectively. Additionally the --layout option
  623.      was changed to show more information about the suEXEC setup.
  624.      [Lars Eilebrecht] PR#3316, 3357, 3361
  625.  
  626.   *) Added the last two WebDAV status codes of 424 (Failed Dependency)
  627.      and 507 (Insufficient Storage) for use by third-party modules.
  628.      [Roy Fielding]
  629.  
  630.   *) Enabled all of the WebDAV method names for use by third-party
  631.      modules, Limit, and Script directives.  That includes PATCH,
  632.      PROPFIND, PROPPATCH, MKCOL, COPY, MOVE, LOCK, and UNLOCK.
  633.      Improved mod_actions.c so that it can use any of the methods
  634.      defined in httpd.h.  Added ap_method_number_of(method) for
  635.      getting the internal method number.  [Roy Fielding]
  636.  
  637.   *) PORT: Add a port to the TPF OS. [Joe Moenich <moenich@us.ibm.com> and
  638.      others at IBM]
  639.  
  640.   *) Fix problems with handling of UNC names (e.g., \\host\path)
  641.      on Win32.  [Ken Parzygnat <kparz@us.ibm.com>]
  642.  
  643.   *) Rework os_canonical_*() on Win32 so it's simpler, more
  644.      robust, and works.  [Ken Parzygnat <kparz@us.ibm.com>]
  645.      PR#2555, 2915, 3064, 3232
  646.  
  647.   *) Work around incomplete implementation of strftime on Win32.
  648.      [Manoj Kasichainula, Ken Parzygnat <kparz@us.ibm.com>]
  649.  
  650.   *) Move a typedef to fix compile problems on Linux with 1.x kernels.
  651.      [Manoj Kasichainula] PR#3177
  652.  
  653.   *) PORT: Add a port to the Concurrent PowerMAX OS. [Tom Horsley
  654.      <Tom.Horsley@mail.ccur.com>]
  655.  
  656.   *) WIN32: Log more explicit error messages if spawning an interpreted 
  657.      script failed, including the command line used to attempt to execute 
  658.      the interpreter and the Win32 error code returned.  [Marc Slemko]
  659.  
  660.   *) Disable sending of error-notes on a 500 (Internal Server Error) response
  661.      since it often includes file path info.  Enable sending of error-notes
  662.      on a 501 (Method Not Implemented).  [Roy Fielding] PR#3173
  663.  
  664.   *) http_config.c would respond with 501 (Method Not Implemented) if a
  665.      content type handler was specified but could not be found, which
  666.      should have been a 500 response.  Likewise, mod_proxy.c would responsd
  667.      with a 501 if the URI scheme is unrecognized instead of the correct
  668.      response of 403 (Forbidden).  [Roy Fielding]
  669.  
  670.   *) SECURITY: Eliminate DoS attack when a bad URI path contains what
  671.      looks like a printf format escape.  [Marc Slemko, Studenten Net Twente]
  672.  
  673.   *) Fix in mod_autoindex: for files where the last modified time stamp was
  674.      unavailable, an empty string was printed which was 2 bytes short.
  675.      The size and description columns were therefore not aligned correctly.
  676.      [Martin Kraemer] (no PR#)
  677.  
  678.   *) Update BS2000 OS code to work with recent versions. Starting with
  679.      release A17, the child fork() must be replaced by a _rfork().
  680.      (BS2000 only) [Martin Kraemer]
  681.  
  682.   *) Add the actual server_rec structure of the specific Vhost to the
  683.      scoreboard file and avoid a string copy (as well as allow some
  684.      further future enhancements). [Harrie Hazewinkel
  685.      <harrie.hazewinkel@jrc.it>]
  686.  
  687.   *) Add APACI --permute-module=foo:bar option which can be used to
  688.      on-the-fly/batch permute the order of two modules (mod_foo and mod_bar)
  689.      in the Configuration[.apaci] file. Two special and important variants are
  690.      supported for the option argument: first BEGIN:foo which permutes module
  691.      mod_foo with the begin of the module list, i.e. it `moves' the module to
  692.      the begin of the list (gives it lowest priority).  And second foo:END
  693.      which permutes mod_foo with the end of the module list, i.e. it `moves'
  694.      the module to the end of the list (gives it highest priority). 
  695.      [Ralf S. Engelschall]
  696.  
  697.   *) Fix problem with 'apache -k shutdown' and startup event
  698.      synchronisation (Win32).  [Ken Parzygnat <kparz@raleigh.ibm.com>]
  699.      PR#3255
  700.  
  701.   *) The config parser wasn't correctly noticing a missing '>'
  702.      on container start lines (e.g., it wouldn't spot
  703.      "<Directory /" as a syntax error).  [Ryan Bloom <rbbloom@us.ibm.com>]
  704.      PR#3279
  705.  
  706.   *) Add a 'RemoveHandler' directive which will selectively remove
  707.      all handler associations for the specified file extensions.
  708.      [Ryan Bloom <rbbloom@us.ibm.com>] PR#1799.
  709.  
  710.   *) Properly handle & allow "nul" and ".*/null" in AccessConfig and
  711.      ResourceConfig directives on Win32.  Also add a note to the effect
  712.      of 'useless User directive ignored on Win32' to the errorlog if
  713.      a User directive is encountered on Win32.
  714.      [Ken Parzygnat <kparz@raleigh.ibm.com>] PR#2078, 2303.
  715.  
  716.   *) Fix multiple whitespace handling in imagemaps for mod_imap which was
  717.      broken since Apache 1.3.1 where we took out compressing of multiple
  718.      spaces in ap_cfg_getline().
  719.      [Ivan Richwalski <ivan@seppuku.net>] PR#3249
  720.  
  721.   *) Fix Berkeley-DB/2.x support in mod_auth_db: The data structures were not
  722.      initialized correctly and the db_open() call used an invalid mode
  723.      parameter. [Ron Klatchko <ron@ckm.ucsf.edu>] PR#3171
  724.  
  725.   *) PORT: DSO support for UnixWare 7
  726.      [Ralf S. Engelschall, Ron Record <rr@sco.com>]
  727.  
  728.   *) Merge the contents of the {srm,access}.conf-dist* files into the
  729.      httpd.conf-dist* files.  The srm and access files now contain
  730.      only comments, and httpd.conf has all the combined contents in
  731.      a rational order.  [Ken Coar]
  732.  
  733.   *) PORT: DSO/ELF support for FreeBSD 3.0.
  734.      [Ralf S. Engelschall, Dirk Froemberg <ibex@physik.TU-Berlin.DE>]
  735.   
  736.   *) Add a "default-handler" handler that calls the default_hander()
  737.      function which is normally called for static content.  This allows
  738.      you to override a specific handler.  [Marc Slemko]
  739.  
  740.   *) Further simplify checking for absolute paths by replacing an
  741.      hard-coded syntax check with a call to a routine we already created to
  742.      do this.  [Ken Parzygnat <kparz@raleigh.ibm.com>] PR#2976, 3074
  743.  
  744.   *) Log an error if we encounter a malformed "require" directive 
  745.      in mod_auth if we know that we know that no other module can
  746.      deal with it.  [Marc Slemko]
  747.  
  748.   *) Remove ap_private_extern method of hiding conflicting symbols
  749.      on the NEXT platform because it is not correct for all versions,
  750.      and the versions for which it is correct are unknown.
  751.      [Wilfredo Sanchez <wsanchez@apple.com>]
  752.  
  753.   *) Fix inheritance of IndexOptions NameWidth and remove unintended
  754.      restriction on +NameWidth, +IconHeight, and +IconWidth.  [Ken Coar]
  755.  
  756.   *) Fix per-directory config merging for cases in which a 500 error
  757.      is encountered in an .htaccess file somewhere down the tree.
  758.      [Ken Coar]  PR#2409
  759.  
  760.   *) Minor performance improvement to ap_escape_html(). [Roy Fielding]
  761.  
  762.   *) Fixed a segmentation violation in mod_proxy when a response is
  763.      non-cachable.  [Roy Fielding, traced by Doug Bloebaum]. PR#2950, 3056
  764.  
  765. Changes with Apache 1.3.3
  766.  
  767.   *) Added a complete implementation of the Expect header field as
  768.      specified in rev-05 of HTTP/1.1.  Disabled the 100 Continue
  769.      response when we already know the final status, which is mighty
  770.      useful for PUT responses that result in 302 or 401. [Roy Fielding]
  771.  
  772.   *) Remove extra trailing whitespace from the getline results as part
  773.      of the protocol processing, which is extra nice because it works
  774.      between continuation lines, is almost no cost in the normal case
  775.      of no extra whitespace, and saves memory. [Roy Fielding]
  776.  
  777.   *) Added new HTTP status codes and default response bodies from the
  778.      revised HTTP/1.1 (307, 416, 417), WebDAV (102, 207, 422, 423), and 
  779.      HTTP Extension Framework (510) specifications.  Did not add the
  780.      WebDAV 424 and 425 codes because they are bogus.  We don't use any
  781.      of these codes yet, but they are now available to 3rd-party modules.
  782.      [Roy Fielding]
  783.  
  784.   *) Fix a possible race condition between timed-out requests and the
  785.      ap_bhalfduplex select that might result in an infinite loop on
  786.      platforms that do not validate the descriptor. [Roy Fielding]
  787.  
  788.   *) WIN32: Add "-k shutdown" and "-k restart" options to signal a
  789.      running Apache server [Paul Sutton]
  790.  
  791.   *) Fix mod_autoindex bug where directories got a size of "0k" instead
  792.      of "-".  [Martin Plechsmid <plechsmi@karlin.mff.cuni.cz>, Marc Slemko]
  793.      PR#3130
  794.  
  795.   *) PORT: DRS 6000 machine. [Paul Debleecker <pdebleecker@jetair.be>]
  796.  
  797.   *) Add the server signature text (from the core ServerSignature directive)
  798.      to the list of envariables available to scripts, SSI, and the like.
  799.      [Ken Coar]
  800.  
  801.   *) PORT: Fix sys/resource.h handling for SCO 3.x platform.
  802.      [M. Laak <maert@proinv.ee>] PR#3108
  803.  
  804.   *) Fallback from sysconf-based to plain HZ-based `ticks per second'
  805.      calculation in mod_status for all systems which don't have POSIX
  806.      sysconf() (like UTS 2.1) and not only for the NEXT platform.
  807.      [Dave Dykstra <dwd@bell-labs.com>] PR#3055
  808.  
  809.   *) Fix `require ...' directive parsing in mod_auth, mod_auth_dbm and
  810.      mod_auth_db by using ap_getword_white() (which uses ap_isspace()) 
  811.      instead of ap_getword(..., ' ') (which parses only according to spaces 
  812.      but not tabs).  [James Morris <jmorris@intercode.com.au>, 
  813.      Ralf S. Engelschall] PR#3105
  814.  
  815.   *) Fix the SERVER_NAME variable under sub-request situations (where
  816.      `UseCanonicalName off' is used) like CGI's called from SSI pages or
  817.      RewriteCond variables by adopting r->hostname to sub-requests.
  818.      [James Grinter <jrg@blodwen.demon.co.uk>] PR#3111
  819.  
  820.   *) Fix stderr redirection under syslog-based error logging situation.
  821.      [Youichirou Koga <y-koga@jp.FreeBSD.org>] PR#3095
  822.  
  823.   *) Document `ErrorLog syslog:facility' variant of error logging.
  824.      [Youichirou Koga <y-koga@jp.FreeBSD.org>] PR#3096
  825.  
  826.   *) Fix http://localhost/ hints in top-level INSTALL document.
  827.      [Rob Jenson <robjen@spotch.com>, Ralf S. Engelschall] PR#3088
  828.  
  829.   *) Quote paths in default configuration files.  [Wilfredo Sanchez]
  830.  
  831.   *) PORT: Remove extra HAVE_SYS_RESOURCE_H define for RHAPSODY since
  832.      it is now taken care of properly by the header file tests.
  833.      [Wilfredo Sanchez <wsanchez@apple.com>]
  834.  
  835.   *) Fix problem with scripts and filehandle inheritance on Win32.
  836.      [Ken Parzygnat <kparz@raleigh.ibm.com>]  PR#2884, 2910
  837.  
  838.   *) Win32 name canonicalisation could end up using the server's
  839.      working directory to fill in some blanks.  [Ken Parzygnat
  840.      <kparz@raleigh.ibm.com>] PR#3001
  841.  
  842.   *) Correct invalid assumption by ap_sub_req_lookup_file() that all
  843.      absolute paths begin with "/" -- because they don't on Win32.
  844.      [Ken Parzygnat <kparz@raleigh.ibm.com>] PR#2976, 3074
  845.  
  846.   *) Add [REDIRECT_]VARIANTS environment variable to mod_speling
  847.      so that ErrorDocument 300 processors can reformat the list
  848.      if desired.  [Ken Coar] PR#2859
  849.  
  850.   *) Add +/- incremental prefixes to IndexOptions keywords, and
  851.      enable merging of multiple IndexOptions directives.  [Ken Coar]
  852.  
  853.   *) PORT: Allow GuessOS to recognize Unixware 7.0.1 [Steve Cameron
  854.      <steve.cameron@compaq.com>]
  855.  
  856.   *) Reconstructed the loop through multiple htaccess file names so
  857.      that missing files are not confused with unreadable files.
  858.      [Roy Fielding]
  859.  
  860.   *) The ap_pfopen and ap_pfdopen routines were failing to protect the
  861.      errno on an error, which leads to one error being mistaken for
  862.      another when reading non-existent .htaccess files.
  863.      [Jim Jagielski]
  864.  
  865.   *) OS/2: The new header tests get things right, need to update
  866.      ap_config.h.  [Brian Havard]
  867.  
  868.   *) The Perl %ENV hash will now be setup by default when using the
  869.      mod_include `perl' command [Doug MacEachern]
  870.  
  871.   *) PORT: Add Pyramid DC/OSx support to configuration mechanism.
  872.      [Earle Ake <akee@wpdiss1.wpafb.af.mil>]
  873.  
  874.   *) PORT: Fix sys/resource.h handling for Amdahl's UTS 2.1
  875.      [Dave Dykstra <dwd@bell-labs.com>] PR#3054
  876.  
  877.   *) Correct comment in mod_log_config.c about its internals.
  878.      [Elf Sternberg <elf@halcyon.com>]
  879.  
  880.   *) Avoid possible line overflow in Configure: Use an awkfile to
  881.      handle the creation of modules.c [Jim Jagielski]
  882.  
  883. Changes with Apache 1.3.2
  884.  
  885.   *) Fix bug in ap_remove_module(), which caused problems for dso's 
  886.      who were the top_module.  [Doug MacEachern]
  887.  
  888.   *) Add support for Berkeley-DB/2.x (in addition to Berkeley-DB/1.x) to
  889.      mod_auth_db to both be friendly to users who wants to use this version
  890.      and to avoid problems under platforms where only version 2.x is present.
  891.      [Dan Jacobowitz <drow@false.org>, Ralf S. Engelschall]
  892.  
  893.   *) When using ap_log_rerror(), make the error message available to the
  894.      *ERROR_NOTES envariables by default.  [Ken Coar]
  895.  
  896.   *) BS2000 platform only: get rid of the nasty BS2000AuthFile.
  897.      You now must define a BS2000Account name for the server User.
  898.      This has fewer security implications than the old approach.
  899.      [Martin Kraemer]
  900.  
  901.   *) Fix SHARED_CORE feature for HPUX platform: We now use extension `.sl'
  902.      instead of `.so' and `SHLIB_PATH' instead of `LD_LIBRARY_PATH' on this
  903.      platform to make the braindead HPUX linker happy. Notice, for the module
  904.      DSOs we don't have to use this, because these are loaded manually (and
  905.      not via HPUX' dld). [Ralf S. Engelschall] PR#2905, PR#2968
  906.  
  907.   *) Remove 64 thread limit on Win32.
  908.      [Bill Stoddard <stoddard@raleigh.ibm.com>]
  909.  
  910.   *) Remove redundant substitutions in top-level Makefile.tmpl.
  911.      [Ralf S. Engelschall]
  912.  
  913.   *) Fix APACI's `Group' configuration adjustment - especially for Linux
  914.      platforms where `nogroup' exists in /etc/group. [Ralf S. Engelschall]
  915.  
  916.   *) Make PrintPath work generically instead of having one version
  917.      strictly for OS/2. [Jim Jagielski, Brian Havard]
  918.  
  919.   *) Fix the recently introduced C header file checking: We now use the C
  920.      pre-processor pass only (and no longer the complete compiler pass) to
  921.      determine whether a C header file exists or not. Because only this way
  922.      we're safe against inter-header dependencies (which caused horrible
  923.      portability problems). The only drawback is that we now have a CPP
  924.      configuration variable which has to be determined first (we do a similar
  925.      approach as GNU Autoconf does here). When all fails the user still has
  926.      the possibility to override it manually via APACI or src/Configuration.
  927.      As a fallback for the header check itself we can directly check the
  928.      existance of the file under /usr/include, too.
  929.      [Ralf S. Engelschall] PR#2777
  930.  
  931.   *) PORT: Added RHAPSODY (Mac OS X Server) support. MAP_TMPFILE defined
  932.      as an alternate mechanism for mmap'd shared memory for RHAPSODY.
  933.      ap_private_extern defined to hide symbols that conflict with loaded
  934.      dynamic libraries on the NEXT and RHAPSODY platforms.
  935.      [Wilfredo Sanchez <wsanchez@apple.com>]
  936.  
  937.   *) Delete PID file on clean shutdowns.
  938.      [Charles Randall <crandall@matchlogic.com>] PR#2947
  939.  
  940.   *) Fix mod_auth_*.html documents: NSCA -> NCSA
  941.      [Youichirou Koga <y-koga@jp.FreeBSD.org>] PR#2991
  942.  
  943.   *) Fix INSTALL document: www.gnu.ai.mit.edu -> www.gnu.org
  944.      [Karl Berry <karl@gnu.org>] PR#2994
  945.  
  946.   *) Fix dbmmanage.1 manual page.
  947.      [Youichirou Koga <y-koga@jp.FreeBSD.org>] PR#2992
  948.      
  949.   *) Fix possible buffer overflow situation in suexec.c.
  950.      [Jeff Stewart <jws@purdue.edu>] PR#2790
  951.  
  952.   *) Add some more LIBS for the SCO5 platform which are needed for the already
  953.      used -lprot. It's actually a bug in SCO5, of course.
  954.      [Ronald Record <rr@sco.com>] PR#2533
  955.  
  956.   *) Fix documentation of ProxyPass/ProxyPassReverse according to the
  957.      trailing slash problem. [Jon Drukman <jsd@gamespot.com>] PR#2933
  958.   
  959.   *) Remove `-msym' option from LDFLAGS_SHLIB for the Digital UNIX (OSF/1)
  960.      platform, because it's only supported under version 4.0 and higher. But
  961.      because our GuessOS is still unaware of Digital UNIX versions and the
  962.      -msym is just to optimize the DSO statup time a little bit it's safe and
  963.      best when we leave it out now.  [Ralf S. Engelschall] PR#2969
  964.  
  965.   *) Fix the ap_log_error_old(), ap_log_unixerr() and ap_log_printf()
  966.      functions: First all three functions no longer fail on strings containing
  967.      "%" chars and second ap_log_printf() no longer does a double-formatting
  968.      (instead it directly passes through the message to be formatted to the
  969.      real internal formatting function). [Ralf S. Engelschall] PR#2941
  970.  
  971.   *) Allow "Include" directives anywhere in the server config
  972.      files (but not .htaccess files).  [Ken Coar] PR#2727
  973.  
  974.   *) The proxy was refusing to serve CONNECT requests except to
  975.      port 443 (https://) and 563 (snews://). The new AllowCONNECT
  976.      directive allows the configuration of the ports to which a
  977.      CONNECT is allowed.  [Sameer Parekh, Martin Kraemer]
  978.  
  979.   *) mod_expires will now act on content that is not sent from a file
  980.      on disk.  Previously it would never add an Expires: header to
  981.      any response that did not come from a file on disk; the only
  982.      case where it still doesn't (and can't) add one for that type of 
  983.      content is if you are using a modification date based setting.  
  984.      [Marc Slemko, Paul Phillips <paulp@go2net.com>]
  985.  
  986.   *) Problems encountered during .htaccess parsing or CGI execution
  987.      that lead to a "500 Server Error" condition now provide explanatory
  988.      text (in the *ERROR_NOTES envariable) to ErrorDocument 500 scripts.
  989.      [Ken Coar] PR#1291
  990.  
  991.   *) Add NameWidth keyword to IndexOptions directive so that the
  992.      width of the filename column is customisable.  [Ken Coar, Dean Gaudet]
  993.      PR#1949, 2324.
  994.  
  995.   *) Recognize lowercase _and_ uppercase `uname' results under
  996.      SCO OpenServer. [David Coelho <drc@ppt.com>]
  997.  
  998.   *) As duplicate "HTTP/1.0 200 OK" lines within the header seem to be
  999.      a common problem of (mis-administrated?) IIS servers, make the apache
  1000.      proxy immune to these errors (and ignore the duplicates, but log
  1001.      the fact to error_log). [Martin Kraemer], after the proposal in PR#2914 
  1002.      
  1003.   *) The <IfModule and <IfDefine block starting directives now only
  1004.      allow exactly one argument. Previously, the optional negation
  1005.      character '!' could be separated by whitespace without a syntax
  1006.      error being reported, albeit defeating the IfModule functionality
  1007.      (enclosed directives would ALWAYS be executed). By using the
  1008.      stricter syntax, these hard-to-track errors can be avoided.
  1009.      [Martin Kraemer]
  1010.  
  1011.   *) Simplify handling of IndexOptions in mod_autoindex -- and BTW
  1012.      cause the standalone FancyIndexing directive to logically OR
  1013.      into any existing IndexOptions settings rather than wiping
  1014.      them out.  [Ken Coar]
  1015.  
  1016.   *) Changes in ftp proxy: make URL parsing simpler by using the
  1017.      parsed_uri stuff.
  1018.      + Add display of the "current directory" in cases where it's
  1019.      different from the supplied path (e.g., ftp://user@host/ lives
  1020.      in /home/user, not in /, therefore clicking on "../" in the
  1021.      starting directory might send us to /home/).
  1022.      + When ftp login fails, (esp. when a user name was part of the
  1023.      URL already), we now return [401 Unauthorized ] to allow the
  1024.      browser to pop up an authorization dialog. This makes passwords
  1025.      slightly less visible (they don't appear in the regular log files)
  1026.      and implements a functionality that other www proxy servers
  1027.      already offered.
  1028.      [Martin Kraemer]
  1029.  
  1030.   *) Triggered by the recent "Via:" header changes, the proxy module would
  1031.      dump core for replies with invalid headers (e.g., duplicate
  1032.      "HTTP/1.0 200 OK" lines). These errors are now logged and the
  1033.      core dump is avoided. Also, broken replies are not cached.
  1034.      [Martin Kraemer] PR#2914
  1035.  
  1036.   *) new `GprofDir' directive when compiled with -DGPROF, where gprof can
  1037.      plop gmon.out profile data for each child [Doug MacEachern]
  1038.    
  1039.   *) Use the construct ``"$@"'' instead of ``$*'' in the generated
  1040.      config.status script to be immune against arguments with whitespaces.
  1041.      [Yves Arrouye <yves@apple.com>] PR#2866
  1042.  
  1043.   *) Replace the inlined information grabbing stuff for the configuration
  1044.      adjustment feature (no --without-confadjust) with calls to a new helper
  1045.      script `buildinfo.sh' which is both more flexible and already proofed to
  1046.      be more robust against platform differences. This mainly fixes the
  1047.      recently occured ``sed: command garbled: ...'' problems.
  1048.      [Ralf S. Engelschall] PR#2776, PR#2848
  1049.  
  1050.   *) Make ab.c again pass ``gcc -Wall -Wshadow -Wpointer-arith -Wcast-align
  1051.      -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -Winline''
  1052.      without complains after we recently added the POST feature.
  1053.      [Ralf S. Engelschall]
  1054.  
  1055.   *) Renamed is_HTTP_xxx() macros to ap_is_HTTP_xxx() name. They are used inside
  1056.      modules as API functions and we forgot them at the big symbol renaming.
  1057.      [Ralf S. Engelschall]
  1058.  
  1059.   *) Remove bad reference to non-existing SERVER_VERSION in mod_rewrite.html
  1060.      [Youichirou Koga <y-koga@jp.FreeBSD.ORG>] PR#2895
  1061.  
  1062.   *) Dynamically size the filename column of mod_autoindex output.
  1063.      [Dean Gaudet]
  1064.  
  1065.   *) Add the ability to do POST requests to the ab benchmarking tool.
  1066.      [Kurt Sussman <kls@best.com>] PR#2871
  1067.  
  1068.   *) Bump up MAX_ENV_FLAGS in mod_rewrite.h from the too conservatice limit of
  1069.      5 to 10 because there are some users out there who always have 5 to 8
  1070.      variables in one RewriteRule and had to patch mod_rewrite.h for every
  1071.      release. So 15 should be now more than enough, even for them. (I never
  1072.      needed more than 4 in my RewriteRules ;-)
  1073.      [Ralf S. Engelschall]
  1074.  
  1075.   *) Make the proxy generate and understand Via: headers
  1076.      [Martin Kraemer]
  1077.  
  1078.   *) Change the proxy to use tables instead of array_headers for
  1079.      the header lines. [Martin Kraemer]
  1080.  
  1081.   *) Make sure the config.status file is not overridden when just
  1082.      ``configure --help'' is used. [Ralf S. Engelschall] PR#2844
  1083.  
  1084.   *) Split MODULE_MAGIC_NUMBER into _MAJOR/_MINOR numbers. This should
  1085.      provide a way to trace API changes that add functionality but do
  1086.      not create a compatibility issue for precompiled modules, etc.
  1087.      See include/ap_mmn.h for more details.  [Randy Terbush]
  1088.  
  1089.   *) Fix suexec installation under `make install root=xxx' situation.
  1090.      [Ralf S. Engelschall]
  1091.  
  1092.   *) Extend the output of the -V switch to include the paths of all
  1093.      compiled-in configuration files, if they were overridden at
  1094.      compile time, for least astonishment of the user.
  1095.      [Martin Kraemer]
  1096.  
  1097.   *) When READing a request in ExtendedStatus mode, the "old"
  1098.      vhost, request and client information is not displayed.
  1099.      [Jim Jagielski]
  1100.  
  1101.   *) STATUS is no longer available. Full status information now
  1102.      run-time configurable using the ExtendedStatus directive.
  1103.      [Jim Jagielski]
  1104.  
  1105.   *) SECURITY: Eliminate O(n^2) space DoS attacks (and other O(n^2)
  1106.      cpu time attacks) in header parsing.  Add ap_overlap_tables(),
  1107.      a function which can be used to perform bulk update operations
  1108.      on tables in a more efficient manner.  [Dean Gaudet]
  1109.  
  1110.   *) SECURITY: Added compile-time and configurable limits for
  1111.      various aspects of reading a client request to avoid some simple
  1112.      denial of service attacks, including limits on maximum request-line
  1113.      size (LimitRequestLine), number of header fields (LimitRequestFields),
  1114.      and size of any one header field (LimitRequestFieldsize).  Also added
  1115.      a configurable directive LimitRequestBody for limiting the size of the
  1116.      request message body.  [Roy Fielding]
  1117.  
  1118.   *) Make status module aware of DNS and logging states, even if
  1119.      STATUS not defined.  [Jim Jagielski]
  1120.  
  1121.   *) Fix a problem with the new OS/2 mutexes.  [Brian Havard]
  1122.  
  1123.   *) Enhance mod_speling so that CheckSpelling can be used in
  1124.      <Directory> containers and .htaccess files.  [Ken Coar]
  1125.  
  1126.   *) API: new ap_custom_response() function for hooking into the
  1127.      ErrorDocument mechanism at runtime [Doug MacEachern]
  1128.  
  1129.   *) API: new ap_uuencode() function [Doug MacEachern]
  1130.  
  1131.   *) API: scan_script_header_err_core() now "public" and renamed
  1132.      ap_scan_script_header_err_core() [Doug MacEachern]
  1133.  
  1134.   *) The 'status' module will now show the process pid's and their
  1135.      state even without full STATUS accounting. [Jim Jagielski]
  1136.  
  1137.   *) Restore the client IP address to the error log messages, this
  1138.      was lost during the transition from 1.2 to 1.3.  Add a new
  1139.      function ap_log_rerror() which takes a request_rec * and
  1140.      formats it appropriately.  [Dean Gaudet] PR#2661
  1141.  
  1142.   *) Cure ap_cfg_getline() of its nasty habit of compressing internal
  1143.      whitespace in input lines -- including within quoted strings.
  1144.      [Ken Coar]
  1145.      but leading and trailing whitespace should continue to be
  1146.      stripped [Martin Kraemer]
  1147.  
  1148.   *) Cleanup of the PrintPath/PrintPathOS2 helper functions. Avoid
  1149.      the ugly use of an env. variable and use command-line args for
  1150.      alternate $PATH. Make more like advanced 'type's as well.
  1151.      [Jim Jagielski]
  1152.  
  1153.   *) The IRIXN32 Rule was being ignored. Configure now correctly adds
  1154.      -n32 only if IRIXN32 says to. [Jim Jagielski, Alain St-Denis
  1155.      <alain.st-denis@ec.gc.ca>] PR#2736
  1156.  
  1157.   *) Clean up a warning in mod_proxy. [Ralf S. Engelschall]
  1158.  
  1159.   *) Renamed __EMX__ (internal define of the gcc port under OS/2) to OS2
  1160.      following the same idea as "MSVC vs WIN32". Additionally the src/os/emx/
  1161.      directory was renamed to src/os/os2/ for consistency.
  1162.      [Brian Havard, Ralf S. Engelschall]
  1163.  
  1164.   *) Add new Rule SHARED_CHAIN which can be used to enable linking of DSO
  1165.      files (here modules) against other DSO files (here shared libraries).
  1166.      This is done by determining a subset of LIBS which can be safely used for
  1167.      linking the DSOs, i.e. PIC libs and shared libs.  Currently the rule is
  1168.      disabled for all platforms to avoid problems with this (experimental)
  1169.      rule. But we provide it now for those people how ran into problems and
  1170.      want to came out by forcing linking against DSOs.
  1171.      [Ralf S. Engelschall] PR#2587
  1172.  
  1173.   *) Fix suEXEC start message: Has to be of `notice' level to really get
  1174.      printed together with the standard startup message because the `notice'
  1175.      level is handled special inside ap_log_error() for startup messages.
  1176.      [Ralf S. Engelschall] PR#2761 PR#2761 PR#2765
  1177.  
  1178.   *) Add correct `model' MIME types from RFC2077 to mime.types file.
  1179.      [Ralf S. Engelschall] PR#2732
  1180.  
  1181.   *) Fixed examples in mod_rewrite.html document. 
  1182.      [Youichirou Koga <y-koga@jp.FreeBSD.org>, Ralf S. Engelschall] PR#2756
  1183.  
  1184.   *) Allow ap_read_request errors to propagate through the normal request
  1185.      handling loop so that the connection can be properly closed with
  1186.      lingering_close, thus avoiding a potential TCP reset that would
  1187.      cause the client to miss the HTTP error response.  [Roy Fielding]
  1188.  
  1189.   *) One more portability fix for APACI shadow tree support: Swap order of awk
  1190.      and sed in top-level configure script to avoid sed fails on some
  1191.      platforms (for instance SunOS 4.1.3 and NCR SysV) because of the
  1192.      non-newline-termined output of Awk. [Ralf S. Engelschall] PR#2729
  1193.  
  1194.   *) PORT: NEC EWS4800 support.
  1195.      [MATSUURA Takanori <t-matsuu@protein.osaka-u.ac.jp>]
  1196.  
  1197.   *) Fix a segfault in the proxy on OS/2.  [Brian Havard]
  1198.  
  1199.   *) Fix Win32 part of ap_spawn_child() by providing a reasonable child_info
  1200.      structure instead of just NULL. This fixes at least the RewriteMap
  1201.      programs under Win32. [Marco De Michele <mdemichele@tin.it>] PR#2483
  1202.  
  1203.   *) Add workaround to top-level `configure' script for brain dead 
  1204.      `echo' commands which interpet escape sequences per default.
  1205.      [Ralf S. Engelschall] PR#2654
  1206.  
  1207.   *) Make sure that the path to the Perl interpreter is correctly
  1208.      adjusted under `make install' also for the printenv CGI script.
  1209.      [Ralf S. Engelschall] PR#2595
  1210.  
  1211.   *) Update the mod_rewrite.html document to correctly reflect the situation
  1212.      of the `proxy' (`[P]') feature. [Ralf S. Engelschall] PR#2679
  1213.  
  1214.   *) Fix `install-includes' sub-target of `install' target in top-level
  1215.      Makefile.tmpl: The umask+cp approach didn't work as expected (especially
  1216.      for users which extracted the distribution under 'umask 077'), so replace
  1217.      it by an explicit cp+chmod approach.
  1218.      [Richard Lloyd, Curt Sampson, Ralf S. Engelschall] PR#2656 PR#2626
  1219.  
  1220.   *) Fix `distclean' and `clean' targets in src/Makefile.tmpl to have same
  1221.      behavior and to cleanup correctly even under enabled SHARED_CORE rule.
  1222.      [Ralf S. Engelschall]
  1223.  
  1224.   *) Use a more straight forward and thus less problematic Sed command in
  1225.      src/helper/mkdir.sh script.  [Ralf S. Engelschall]
  1226.  
  1227.   *) Make sure the `configure' scripts doesn't fail when trying to guess the
  1228.      domainname of the machine and there are multiple `domainname' and
  1229.      `search' entries in /etc/resolv.conf.
  1230.      [Ralf S. Engelschall] PR#2710
  1231.  
  1232.   *) Add note about the SHARED_CORE requirement on some platforms also to the
  1233.      INSTALL file because a lot of users don't read htdocs/manual/dso.html
  1234.      first. [Ralf S. Engelschall] PR#2701
  1235.  
  1236.   *) Fix document "hyperlink" for dso.html in src/Configuration.tmpl
  1237.      [Knut A.Syed <Knut.Syed@nhh.no>] PR#2674
  1238.  
  1239.   *) Modify mod_rewrite to update the Vary response field if the URL rewriting
  1240.      engine does any manipulations or decisions based upon request fields. 
  1241.      [Ken Coar] PR#1644
  1242.  
  1243.   *) Document the special APACI behavior for installation paths where
  1244.      ``/apache'' is appended to paths under some (well defined, of course)
  1245.      situations to prevent pollution of system locations with Apache files.
  1246.      [Ralf S. Engelschall] PR#2660
  1247.  
  1248.   *) Fixed problem with buffered response message not being sent for
  1249.      the read_request error conditions of URI-too-long (414) and
  1250.      malformed header fields (400).  [Roy Fielding] PR#2646
  1251.  
  1252.   *) Add support for the Max-Forwards: header line required by RFC2068 for
  1253.      the TRACE method. This allows apache to TRACE along a chain of proxies
  1254.      up to a predetermined depth. [Martin Kraemer]
  1255.  
  1256.   *) Fix SHARED_CORE rule: The CFLAGS_SHLIB variable is no longer doubled
  1257.      (compilers complained) and the .so.V.R.P filename extension was adjusted
  1258.      to correctly reflect the 1.3.2 version.
  1259.      [Ralf S. Engelschall] PR#2644
  1260.  
  1261.   *) SECURITY: Plug "..." and other canonicalization holes under OS/2.
  1262.      [Brian Havard]
  1263.   
  1264.   *) PORT: implement serialized accepts for OS/2.  [Brian Havard]
  1265.  
  1266.   *) mod_include had problems with the fsize and flastmod directives
  1267.      under WIN32.  Fix also avoids the minor security hole of using
  1268.      ".." paths for fsize and flastmod.
  1269.      [Manoj Kasichainula <manojk@raleigh.ibm.com>] PR#2355
  1270.  
  1271.   *) Fixed some Makefile dependency problems.  [Dean Gaudet]
  1272.  
  1273. Changes with Apache 1.3.1
  1274.  
  1275.   *) Disable the incorrect entry for application/msword in the 
  1276.      mod_mime_magic "magic" file because it also matches other Office
  1277.      documents.  [Ralf S. Engelschall] PR#2608
  1278.  
  1279.   *) Fix broken RANLIB handling in src/Configure (the entry from
  1280.      src/Configuration.tmpl was ignored) and additionally force RANLIB to
  1281.      /bin/true under HP/UX where ranlib exists but is deprecated.
  1282.      [Ralf S. Engelschall] PR#2627
  1283.      
  1284.   *) 'apachectl status' failed on some systems.
  1285.      [Steve VanDevender <stevev@darkwing.uoregon.edu>, Lars Eilebrecht] PR#2613
  1286.  
  1287.   *) Add new flags for ap_unparse_uri_components() to make it generate
  1288.      the scheme://sitepart string only, or to omit the query string.
  1289.      [Martin Kraemer]
  1290.  
  1291.   *) WIN32: Canonicalize ServerRoot before checking to see if it
  1292.      is a valid directory.  The failure to do this caused certain
  1293.      ServerRoot settings (eg. "ServerRoot /apache") to be improperly
  1294.      rejected.  [Marc Slemko]
  1295.  
  1296.   *) Global renaming of C header files to both get rid of conflicts with third
  1297.      party packages and to again reach consistency:
  1298.        1. conf.h      -> ap_config.h
  1299.        2. conf_auto.h -> ap_config_auto.h \ these are now merged
  1300.        3. ap_config.h -> ap_config_auto.h / in the config process
  1301.        4. compat.h    -> ap_compat.h
  1302.        5. apctype.h   -> ap_ctype.h
  1303.      Backward compatibility files for conf.h and compat.h were created.
  1304.  
  1305.   *) mod_mmap_static will no longer take action on requests unless at 
  1306.      least one "mmapfile" directive is present in the configuration. 
  1307.      This experimental module has to do some black magic to operate 
  1308.      inside the current API and thus creates side-effects for other 
  1309.      modules under some circumstances.
  1310.      [Ralf S. Engelschall]
  1311.  
  1312.   *) Add conservative ticks around more egrep arguments in top-level configure
  1313.      to avoid problems under brain-dead platforms like Digital UNIX (OSF1).
  1314.      [Ralf S. Engelschall] PR#2596
  1315.  
  1316.   *) mod_rewrite created RewriteLock files under the UID of the parent
  1317.      process, thus the child processes had no write access to the files.
  1318.      Now a chown() is done on the file to the uid of the children,
  1319.      if applicable.  [Lars Eilebrecht, Ralf S. Engelschall] PR#2341
  1320.  
  1321.   *) Autogenerate some HAVE_XXXXX_H defines in conf_auto.h (determined via
  1322.      TestCompile) instead of defining them manually in conf.h based on less
  1323.      accurate platform definitions.  This way we no longer have to fiddle with
  1324.      OS-type and/or OS-version identifiers to discover whether a system header
  1325.      file exists or not.  Instead we now directly check for the existence of
  1326.      those esoteric ones. 
  1327.      [Ralf S. Engelschall] PR#2093, PR#2361, PR#2377, PR#2434,
  1328.                            PR#2524, PR#2525, PR#2533, PR#2569
  1329.  
  1330.   *) mod_setenvif (BrowserMatch* and friends) will now match a missing
  1331.      field with "^$".  [Ken Coar]
  1332.  
  1333.   *) Set the RTLD_GLOBAL dlopen mode parameter to allow dynamically loaded
  1334.      modules to load their own modules dynamically.  This improves mod_perl
  1335.      and mod_php3 when these modules are loaded dynamically into Apache.
  1336.      [Rasmus Lerdorf]
  1337.  
  1338.   *) Cache a proxied request in the event that the client cancels the
  1339.      transfer, provided that the configured percentage of the file has
  1340.      already been transfered. It works for HTTP transfers only.  The 
  1341.      new configuration directive is called CacheForceCompletion. 
  1342.      [Glen Parker <glenebob@nwlink.com>] PR#2277
  1343.  
  1344.   *) Add the "<!DOCTYPE HTML" magic cookie used by modern documents (and
  1345.      required by HTML 3.2 and later) to mod_mime_magic's conf/magic.
  1346.      [Anna Shergold <anna@inext.co.uk>]
  1347.  
  1348.   *) Fix yet another signal-based race condition involving nested timers.
  1349.      Signals suck.  [Dean Gaudet]
  1350.  
  1351.   *) suexec's error messages have been clarified a little bit.  [Ken Coar]
  1352.  
  1353.   *) Clean up some, but perhaps not all, 8-bit character set problems
  1354.      with config file parsing, and URL parsing.  We now define
  1355.      ap_isdigit(), ap_isupper(), ... which cast to an (unsigned char).
  1356.      This should work on most modern unixes.
  1357.      [Dean Gaudet] PR#800, 2282, 2553  (and others)
  1358.  
  1359.   *) The "handler not found" error was issued in cases where the handler
  1360.      really did exist, but was just declining to serve the request.
  1361.      [John Van Essen <jve@gamers.org>] PR#2529
  1362.  
  1363.   *) Add Dynamic Shared Object (DSO) support for SCO5 (OpenServer 5.0.x).
  1364.      [Ronald Record <rr@sco.com>] PR#2533
  1365.  
  1366.   *) The APACI libexecdir was not extended with an "apache/" subdir
  1367.      if the installation prefix didn't already contain "apache", but
  1368.      it should be because the DSO files are Apache-specific.  Now
  1369.      libexecdir is treated the same way sysconfdir, datadir, localstatedir
  1370.      and includedir are already treated.
  1371.      [Charles Levert <charles@comm.polymtl.ca>] PR#2551
  1372.  
  1373.   *) The <Limit> parsing routine was incorrectly treating methods as
  1374.      case-insensitive.  [Ken Coar]
  1375.  
  1376.   *) The ap_bprintf() code neglected to test if there was an error on
  1377.      the connection.  ap_bflush() misdiagnosed a failure as a success.
  1378.      [Dean Gaudet]
  1379.  
  1380.   *) add support for #perl arg interpolation in mod_include
  1381.      [Doug MacEachern]
  1382.  
  1383.   *) API: Name changes of table_elts to ap_table_elts, is_table_empty
  1384.      to ap_is_table_empty and bgetflag to ap_bgetflag. [Ben Laurie]
  1385.  
  1386.   *) PORT: Add UnixWare 7 support
  1387.      [Vadim Kostoglodoff <vadim@olly.ru>] PR#2463
  1388.  
  1389.   *) Fix the Guess-DSO-flags-from-Perl stuff in src/Configure: "perl" was
  1390.      used instead of "$PERL" which contains the correctly determined Perl
  1391.      interpreter (important for instance on systems where "perl" and "perl5"
  1392.      exists, like BSDI or FreeBSD, etc).
  1393.      [Ralf S. Engelschall] PR#2505
  1394.  
  1395.   *) Move the initial suEXEC-related startup message from plain
  1396.      fprintf()/stderr to a delayed ap_log_error()-based one to avoid problems
  1397.      when Apache is started from inetd (instead of standalone). Under this
  1398.      situation startup messages on stderr lead to problems (the line is sent
  1399.      to the client in front of the requested document).
  1400.      [Ralf S. Engelschall] PR#871, PR#1318
  1401.  
  1402.   *) Add a flag so ap_fnmatch() can be used for case-blind pattern matching.
  1403.      [Ken Coar, Dean Gaudet]
  1404.  
  1405.   *) WIN32: Don't collapse multiple slashes in PATH_INFO.
  1406.      [Ben Laurie, Bill Stoddard <wgstodda@us.ibm.com>] PR#2274
  1407.  
  1408.   *) WIN32 SECURITY: Eliminate trailing "."s in path components. These are
  1409.      ignored by the Windows filesystem, and so can be used to bypass security.
  1410.      [Ben Laurie, Alexei Kosut].
  1411.  
  1412.   *) We now attempt to dump core when we get SIGILL. [Jim Jagielski]
  1413.  
  1414.   *) PORT: remove broken test for MAP_FILE in http_main.c.
  1415.      [Wilfredo Sanchez <wsanchez@apple.com>]
  1416.  
  1417.   *) PORT: Change support/apachectl to use "kill -0 $pid" to test if the
  1418.      httpd is running.  This should be more portable than figuring out
  1419.      which of three dozen different versions of "ps" are installed.
  1420.      [a cast of dozens]
  1421.  
  1422.   *) WIN32: If we can't figure out how to execute a file in a script
  1423.      directory, bail out of the request with an error message.  [W G Stoddard]
  1424.  
  1425.   *) WIN32 SECURITY: Eliminate directories consisting of three or more dots;
  1426.      these are treated by Win32 as if they are ".." but are not detected by
  1427.      other machinery within Apache. This is something of a kludge but
  1428.      eliminates a security hole. [Manoj Kasichainula, Ben Laurie]
  1429.  
  1430.   *) Move ap_escape_quotes() from src/ap to src/main/util.c; it uses
  1431.      pools and thus pollutes libap (until the pool stuff is moved there).
  1432.      [Ken Coar]
  1433.  
  1434.   *) IndexIgnore should be case-blind on Win32 (and any other case-aware
  1435.      but case-insensitive platforms).  New #define for this added to conf.h
  1436.      (CASE_BLIND_FILESYSTEM).  [Ken Coar] PR#2455
  1437.  
  1438.   *) Enable DSO support for OpenBSD in general, not only for 2.x, because it
  1439.      also works for OpenBSD 1.x. [Ralf S. Engelschall]
  1440.  
  1441.   *) PORT: Fix compilation problem on ARM Linux.
  1442.      [Sam Kington <sam@illuminated.co.uk>] PR#2443
  1443.  
  1444.   *) Let APACI's configure script determine some configuration parameters
  1445.      (Group, Port, ServerAdmin, ServerName) via some intelligent tests to
  1446.      remove some of the classical hurdles for new users when setting up
  1447.      Apache. This is done per default because it is useful for the average
  1448.      user. Package authors can use the --without-confadjust option to disable
  1449.      these configuration adjustments.
  1450.      [Ralf S. Engelschall]
  1451.  
  1452.   *) Added an EXTRA_DEPS configuration parameter which can be used
  1453.      to add an extra Makefile dependency for the httpd target, for instance
  1454.      to external third-party libraries, etc.
  1455.      [Ralf S. Engelschall]
  1456.  
  1457.   *) Add <IfDefine>..</IfDefine> sections to the core module (with same spirit
  1458.      as <IfModule>..</IfModule> sections) which can be used to skip or process
  1459.      contained commands dependend of ``-D PARAMETER'' options on the command
  1460.      line. This can be used to achieve logical conditions like <IfDefine
  1461.      ReverseProxy> instead of physically ones (e.g. <IfModule mod_proxy.c>)
  1462.      and thus especially can be used for conditionally loading DSO-based
  1463.      modules via LoadModule, etc. [Ralf S. Engelschall]
  1464.  
  1465.   *) PORT: clean up a warning in mod_status for OS/2.  [Brian Havard]
  1466.  
  1467.   *) Make table elements const. This may prevent obscure errors. [Ben Laurie]
  1468.  
  1469.   *) Fix parsing of FTP `SIZE' responses in proxy module: The newline was not
  1470.      truncated which forced following HTTP headers to be data in the HTTP
  1471.      reponse. [Ralf S. Engelschall, Charles Fu <ccwf@bacchus.com>] 
  1472.      PR#2412, 2367
  1473.  
  1474.   *) Portability fix for APACI shadow tree support: Swap order of awk and sed
  1475.      in top-level configure script to avoid sed fails on some platforms (for
  1476.      instance SunOS 4.1.3 and NCR SysV) because of the non-newline-termined
  1477.      output of Awk. [Bill Houle <bhoule@sandiegoca.ncr.com>] PR#2435
  1478.  
  1479.   *) Improve performance of directory listings (mod_autoindex) by comparing
  1480.      integer keys (last-modified and size) as integers rather than converting
  1481.      them to strings first.  Also use a set of explicit byte tests rather
  1482.      than strcmp() to check for parent directory-ness of an entry.  Oh, and
  1483.      make sure the parent directory (if displayed) is *always* listed first
  1484.      regardless of the sort key.  Overall performance winnage should be good
  1485.      in CPU time, instruction cache, and memory usage, particularly for large
  1486.      directories.  [Ken Coar]
  1487.  
  1488.   *) Add a tiny but useful goody to APACI's configure script: The generation
  1489.      of a config.status script (as GNU Autoconf does) which remembers the used
  1490.      configure command and hence can be used to restore the configuration by
  1491.      just re-running this script or for remembering the configuration between
  1492.      releases.
  1493.      [Ralf S. Engelschall]
  1494.  
  1495.   *) Add httpd -t (test) option for running configuration syntax tests only.
  1496.      If something is broken it complains and exits with a return code
  1497.      non-equal to 0. This can be used manually by the user to check the Apache
  1498.      configuration after editing and is also automatically used by apachectl
  1499.      on (graceful) restart command to make sure Apache doesn't die on restarts
  1500.      because of a configuration which is now broken since the last (re)start.
  1501.      This way `apachectl restart' can be used inside cronjobs without having
  1502.      to expect Apache to be falling down. Additionally the httpd -t can be run
  1503.      via `apachectl configtest'.
  1504.      [Ralf S. Engelschall] PR#2393
  1505.   
  1506.   *) Minor display fix for "install" target of top-level Makefile:
  1507.      the displayed installation command was incorrect although the
  1508.      executed command was correct. Now they are in sync.
  1509.      [Ralf S. Engelschall] PR#2402
  1510.  
  1511.   *) Correct initialization of variable `allowed_globals' in http_main.c
  1512.      [Justin Bradford <justin@ukans.edu>] PR#2400
  1513.  
  1514.   *) Apache would incorrectly downcase the entire Content-Type passed from
  1515.      CGIs.  This affected server-push scripts and such which use
  1516.      multipart/x-mixed-replace;boundary=ThisRandomString.
  1517.      [Dean Gaudet] PR#2394
  1518.  
  1519.   *) PORT: QNX update to properly guess 32-bit systems.
  1520.      [Sean Boudreau <seanb@qnx.com>] PR#2390
  1521.  
  1522.   *) Make sure the DSO emulation code for HPUX finds the proprietary shl_xxx()
  1523.      functions which are in libdld under HPUX 9/10.
  1524.      [Ralf S. Engelschall] PR#2378
  1525.  
  1526.   *) Make sure the "install" target of the top-level Makefile doesn't break
  1527.      because of a return code of 1 from an "if" (for instance under braindead
  1528.      Ultrix the result code of an "if" construct is 1 if the "then" clause
  1529.      didn't match). [Ralf S. Engelschall]
  1530.  
  1531.   *) Add an additional "dummy" target to the "$(LIB)" target in generated
  1532.      modules/xxx/Makefile's to avoid problems with SVR4 Make under "full-DSO"
  1533.      situation (no libxxx.a built, only mod_xxx.so's) where LIB and OBJS are
  1534.      empty. [Ralf S. Engelschall, Dean Gaudet, Martin Kraemer]
  1535.  
  1536.   *) Replace two bad sprintf() calls with ap_snprintf() variants in
  1537.      mod_rewrite. [Ralf S. Engelschall]
  1538.  
  1539.   *) Fix missing usage description for MetaFiles directive.
  1540.      [David MacKenzie <djm@va.pubnix.com>] PR#2384
  1541.  
  1542.   *) mod_log_config wouldn't let vhosts use log formats defined in the
  1543.      main server.  [Christof Damian <damian@mediaconsult.com>] PR#2090
  1544.  
  1545.   *) mod_usertrack was corrupting the client hostname.  As part of the
  1546.      fix, the cookie values were slightly extended to include the
  1547.      fully qualified hostname of the client.
  1548.      [Dean Gaudet] PR#2190, 2229, 2366
  1549.  
  1550.   *) Fix a typo in pool debugging code.  [Alvaro Martinez Echevarria]
  1551.  
  1552.   *) mod_unique_id did not work on alpha linux (in general on any
  1553.      architecture that has 64-bit time_t).
  1554.      [Alvaro Martinez Echevarria]
  1555.  
  1556.   *) PORT: Make SCO 5 (and probably 3) compile again. [Ben Laurie]
  1557.  
  1558.   *) PORT: NCR MPRAS systems have the same bug with SIGHUP restart that
  1559.      Solaris systems experience.  So define WORKAROUND_SOLARIS_BUG.
  1560.      [Klaus Weber <kweber@chephren.germany.ncr.com>] PR#1973
  1561.  
  1562.   *) Change "Options None" to "Options FollowSymLinks" in the 
  1563.      <Directory /> section of the default access.conf-dist
  1564.      (and -win even though it doesn't matter there).  This has better
  1565.      performance, and more intuitive semantics.  [Dean Gaudet]
  1566.  
  1567.   *) PORT: Updated support for UTS 2.1.2.
  1568.      [Dave Dykstra <dwd@bell-labs.com>] PR#2320
  1569.  
  1570.   *) Fix symbol export list (src/support/httpd.exp) after recent
  1571.      API changes in the child spawning area.
  1572.      [Jens-Uwe Mager <jum@helios.de>]
  1573.  
  1574.   *) Workaround for configure script and old `test' commands which do not
  1575.      support the -x flag (for instance under platforms like Ultrix). This is
  1576.      solved by another helper script findprg.sh which searches for Perl and
  1577.      Awk like PrintPath but _via different names_.
  1578.      [Ralf S. Engelschall]
  1579.  
  1580.   *) Remove the system() call from htpasswd.c, which eliminates a system
  1581.      dependancy.  ["M.D.Parker" <mdpc@netcom.com>] PR#2332
  1582.  
  1583.   *) PORT: Fix compilation failures on NEXTSTEP.
  1584.      [Rex Dieter <rdieter@math.unl.edu>] PR#2293, 2316
  1585.  
  1586.   *) PORT: F_NDELAY is a typo, should have been FNDELAY.  There's also
  1587.      O_NDELAY on various systems.  [Dave Dykstra <dwd@bell-labs.com>] PR#2313
  1588.  
  1589.   *) PORT: helpers/GuessOS updates for various versions for NCR SVR4.
  1590.      [juerg schreiner <j.schreiner@zh.ch>,
  1591.      Bill Houle <Bill.Houle@SanDiegoCA.NCR.COM>] PR#2310
  1592.  
  1593.   *) Fix recently introduced Win32 child spawning code in mod_rewrite.c which
  1594.      was broken because of invalid ap_pstrcat() -> strcat() transformation.
  1595.      [Ralf S. Engelschall]
  1596.  
  1597.   *) Proxy Cache Fixes: account for directory sizes, fork off garbage collection
  1598.      to continue in background, use predefined types (off_t, size_t, time_t),
  1599.      log the current cache usage percentage at LogLevel debug
  1600.      [Martin Kraemer, based on discussion between Dean Gaudet & Dirk vanGulik]
  1601.  
  1602. Changes with Apache 1.3.0
  1603.  
  1604.   *) Using a type map file as a custom error document was not possible.
  1605.      [Lars Eilebrecht] PR#1031
  1606.  
  1607.   *) Avoid problems with braindead Awks by additionally searching for gawk 
  1608.      and nawk in APACI's configure script.
  1609.      [Dave Dykstra <dwd@bell-labs.com>, Ralf S. Engelschall] PR#2319
  1610.  
  1611.   *) Rename md5.h to ap_md5.h to avoid conflicts with native MD5 on
  1612.      some systems. [Randy Terbush]
  1613.  
  1614.   *) Change usage of perror()+fprintf(stderr,...) in mod_rewrite to
  1615.      more proper ap_log_error() variants.
  1616.      [Ralf S. Engelschall]
  1617.  
  1618.   *) Make sure the argument for the --add-module option to APACI's configure
  1619.      script is of type [path/to/]mod_xxx.c because all calculations inside
  1620.      configure and src/Configure depend on this.
  1621.      [Ralf S. Engelschall] PR#2307
  1622.  
  1623.   *) Changes usage of perror/fprintf to stderr to more proper ap_log_error
  1624.      in mod_mime, mod_log_referer, mod_log_agent, and mod_log_config.
  1625.      [Brian Behlendorf]
  1626.  
  1627.   *) Various OS/2 cleanups ["Brian Havard" <brianh@kheldar.apana.org.au>]
  1628.  
  1629.   *) PORT: QNX needed a #include <sys/mman.h>; and now it uses flock
  1630.      serialized accept to handle multiple sockets.
  1631.      [Rob Saccoccio <robs@InfiniteTechnology.com>] PR#2295, 2296
  1632.  
  1633.   *) Have NT properly set the directory for CGI scripts 
  1634.      (& other spawned children)
  1635.      [W G Stoddard <wgstodda@us.ibm.com>]
  1636.  
  1637.   *) Propagate environment to CGI scripts correctly in Win32.
  1638.      [W G Stoddard <wgstodda@us.ibm.com>] PR#2294
  1639.  
  1640.   *) Some symbol renaming:
  1641.      ap_spawn_child_err became ap_spawn_child
  1642.      ap_spawn_child_err_buff became ap_bspawn_child
  1643.      spawn_child was obsoleted and moved to compat.h
  1644.      [Brian Behlendorf]
  1645.  
  1646.   *) Upgrade the child spawning code in mod_rewrite for the RewriteMap
  1647.      programs: ap_spawn_child_err() is used and the Win32 case now uses
  1648.      CreateProcess() instead of a low-level execl() (which caused problems in
  1649.      the past under Win32).
  1650.      [Ralf S. Engelschall]
  1651.  
  1652.   *) A few cosmetics and trivial enhancements to APXS to make the
  1653.      generated Makefile more user friendly. [Ralf S. Engelschall]
  1654.  
  1655.   *) Proxy Fix: The proxy special failure routine ap_proxyerror()
  1656.      was updated to use the normal apache error processing, thereby allowing
  1657.      proxy errors to be treated by ErrorDocument's as well. For this
  1658.      purpose, a new module-to-core communication variable "error-notes"
  1659.      was introduced; the proxy (and possibly other modules) communicates
  1660.      its error text using this variable. Its content is copied to a new
  1661.      cgi-env-var REDIRECT_ERROR_NOTES for use by ErrorDocuments.
  1662.      The old proxy special error routine ap_proxy_log_uerror()
  1663.      was replaced by regular ap_log_error() calls, many messages were made
  1664.      more informative. 
  1665.      [Martin Kraemer] PR#494, 1259
  1666.  
  1667.   *) SECURITY: A possible buffer overflow in the ftp proxy was fixed.
  1668.      [Martin Kraemer]
  1669.  
  1670.   *) Transform the configure message "You need root privileges for suEXEC"
  1671.      from a fatal error into a (more friendly) warning because the building
  1672.      ("make") of Apache we can allow, of course. Root privileges are needed
  1673.      only for the installation step ("make install"). So make sure the
  1674.      user is aware of this fact but let him proceed as long as he can.
  1675.      [Ralf S. Engelschall] PR#2288
  1676.   
  1677.   *) Renamed three more functions to common ap_ prefix which we missed at the
  1678.      Big Symbol Renaming because they're #defines and not real C functions:
  1679.      is_default_port(), default_port(), http_method().
  1680.      [Ralf S. Engelschall]
  1681.  
  1682.   *) A zero-length name after a $ in an SSI document should cause
  1683.      just the $ to be in the expansion.  This was broken during the
  1684.      security fixes in 1.2.5.  [Dean Gaudet] PR#1921, 2249
  1685.  
  1686.   *) Call ap_destroy_sub_req() in ap_add_cgi_vars() to reclaim some
  1687.      memory.  [Rob Saccoccio <robs@InfiniteTechnology.com>] PR#2252
  1688.  
  1689.   *) Fix src/support/httpd.exp (DSO export file which is currently only
  1690.      used under AIX) because of recent changes to function names.
  1691.      [Ralf S. Engelschall]
  1692.  
  1693. Changes with Apache 1.3b7
  1694.  
  1695.   *) Make sure a MIME-type can be forced via a RewriteRule even when no
  1696.      substitution takes place, for instance via the following rule:
  1697.      ``RewriteRule ^myscript$ - [T=application/x-httpd-cgi]'' This was often
  1698.      requested by users in the past to force a single script without a .cgi
  1699.      extension and outside any cgi-bin dirs to be executed as a CGI program.
  1700.      [Ralf S. Engelschall] PR#2254
  1701.  
  1702.   *) A fix for protocol issues surrounding 400, 408, and
  1703.      414 responses. [Ed Korthof]
  1704.  
  1705.   *) Ignore MaxRequestsPerChild on WIN32. [Brian Behlendorf]
  1706.  
  1707.   *) Fix discrepancy in proxy_ftp.c which was causing failures when 
  1708.      trying to connect to certain ftpd's, such as anonftpd.  
  1709.      [Rick Ohnemus <rick@ecompcon.com>]
  1710.  
  1711.   *) Make mod_rewrite use ap_open_piped_log() for RewriteLog directive's
  1712.      logfile instead of fiddling around itself with child spawning stuff.
  1713.      [Ralf S. Engelschall]
  1714.  
  1715.   *) Made RefererIgnore case-insensitive.
  1716.  
  1717.   *) Mod_log_agent, mod_log_referer now use ap_open_piped_log for piped logs.
  1718.      [Brian Behlendorf]
  1719.  
  1720.   *) Replace use of spawn_child with ap_spawn_child_err_buff, to make everything
  1721.      "safe" under Win32.  In: mod_include.c, mod_mime_magic.c
  1722.      [Brian Behlendorf]
  1723.  
  1724.   *) Improve RFC1413 support. [Bob Beck <beck@bofh.ucs.ualberta.ca>]
  1725.  
  1726.   *) Fix support script `dbmmanage': It was unable to handle some sort
  1727.      of passwords, especially passwords with "0" chars.
  1728.      [Ralf S. Engelschall] PR#2242
  1729.  
  1730.   *) WIN32: Clicking on "Last Modified" in a fancy index caused a crash. Fixed.
  1731.      [Ben Laurie] PR#2238
  1732.  
  1733.   *) WIN32: CGIs could cause a hang (because of a deadlock in the standard C
  1734.      library), so CGI handling has been changed to use Win32 native handles
  1735.      instead of C file descriptors.
  1736.      [Ben Laurie and Bill Stoddard <wgstodda@us.ibm.com>] PR#1129, 1607
  1737.  
  1738.   *) The proxy cache would store an incorrect content-length in the cached
  1739.      file copy after a cache update. That resulted in repeated fetching
  1740.      of the original copy instead of using the cached copy.
  1741.      [Ernst Kloppenburg <kloppen@isr.uni-stuttgart.de>] PR#2094
  1742.  
  1743.   *) The Makefiles assumed that DSO files are build via $(LD). This
  1744.      is broken for two reasons: First we never defined at least LD=ld
  1745.      somewhere to make sure this works (it was silently assumed that most Make
  1746.      provide a built-in LD definition - ARGL!) and second using the generic LD
  1747.      variable is not the truth. Instead a special variable named LD_SHLIB is
  1748.      reasonable because although "ld" is usually the default, the command for
  1749.      building DSO files can be "libtool" or even "cc" on some systems.
  1750.      [Ralf S. Engelschall]
  1751.  
  1752.   *) Replace the AddVersionPlatform directive with ServerTokens which
  1753.      provides for more control over the format of the Server:
  1754.      header line. SERVER_SUBVERSION is no longer supported;
  1755.      all module should use the ap_add_version_component()
  1756.      API function instead. [Jim Jagielski]
  1757.  
  1758.   *) Support for the NCR MP/RAS 3.0
  1759.      [John Withers <withers@semi.kcsc.mwr.irs.gov>]
  1760.  
  1761.   *) The LDFLAGS_SHLIB_EXPORT variable of src/Configuration[.tmpl] was
  1762.      not retrieved in src/Configure and thus was not useable.
  1763.      [Ralf S. Engelschall]
  1764.  
  1765.   *) Various Makefile consistency cleanups:
  1766.      - make OSDIR also automatically be relative to src/ like INCDIR
  1767.      - SUBDIRS is now generated in src/Makefile only and not in
  1768.        Makefile.config because it is a local define for this location.
  1769.      - remove BROKEN_BPRINTF_FLAGS because is it no longer used inside
  1770.        any Makefile but make sure that at least the "-K inline" is kept in
  1771.        CFLAGS for SCO 5.
  1772.      - update the "depend" targets in Makefile.tmpl files to use $(OSDIR), too.
  1773.      - updated the dependencies theirself
  1774.      - removed not existing SHLIB variable from "clean" targets
  1775.      - replaced SHLIB_OBJS/SHLIBS_OBJ consistently with OBJS_PIC because OBJS
  1776.        already exists and OBJS_PIC are also just plain objects and have not
  1777.        directly to do with "shared" things. The only difference is that they
  1778.        contain PIC. So OBJS_PIC is the more canonical name.
  1779.      - Updated the Makefile-dependency lines for OBJS_PIC
  1780.      - Removed the Makefile-dependency line in Configure to avoid double
  1781.        definitions
  1782.      - replaced ugly xx-so.o/xx.so-o hack with a clean and consistent usage
  1783.        of xxx.lo as GNU libtool does with its PIC objects
  1784.      - reduce local complexity in modules Makefile.tmpl by moving the last
  1785.        existing target "depend" to the generation section in Configure, too.
  1786.      - removed the historical $(SPACER) which was used in the past together
  1787.        with BROKEN_BPRINTF_FLAGS to avoid zig-zags in the build process. This
  1788.        is no longer needed.
  1789.      - force the build and run of the gen_xxx programs under main/ as the
  1790.        first step before building the objects because it looks cleaner
  1791.      [Ralf S. Engelschall]
  1792.  
  1793.   *) WIN32: Make Win32 work again after the /dev/null DoS fix.
  1794.      [Ben Laurie]
  1795.  
  1796.   *) WIN32: Check for buffer overflows in ap_os_canonical_filename.
  1797.      [Ben Laurie]
  1798.  
  1799.   *) WIN32: Don't force ISAPI headers to finish with \n.
  1800.      [Jim Patterson <Jim.Patterson@Cognos.COM>, Ben Laurie] PR#2060
  1801.  
  1802.   *) When opening "configuration" files (like httpd.conf, htaccess
  1803.      and htpasswd), Apache will not allow them to be non-/dev/null
  1804.      device files. This closes a DoS hole. At the same time,
  1805.      we use ap_pfopen to open these files to handle timeouts.
  1806.      [Jim Jagielski, Martin Kraemer]
  1807.  
  1808.   *) Apache will now log the reason its httpd children exit if they exit
  1809.      due to an unexpected signal.  (It requires a new porting define,
  1810.      SYS_SIGLIST, which if defined should point to a list of text
  1811.      descriptions of the signals available.  See PORTING.)  [Dean Gaudet]
  1812.  
  1813.   *) WIN32: chdir() doesn't make sense in a multithreaded environment 
  1814.      like WIN32.  Before, Win32 CGI's could have had sporadic failures 
  1815.      if a chdir call from one thread was made between another chdir call 
  1816.      and a spawn in another thread.  So, for now don't chdir for CGI scripts 
  1817.      in WIN32.  The current CGI "spec" is unclear as to whether it's 
  1818.      necessary.  Long-term fix is to either serialize the chdir/spawn combo 
  1819.      or use WIN32 native calls to spawn a process.  This temp fix was 
  1820.      necessary to remove this as a showstopper for 1.3's release. 
  1821.      [Brian Behlendorf]
  1822.  
  1823.   *) Cleanup the suEXEC support in APACI and make it more safe:
  1824.      1. Add big fat hint in INSTALL about risks and to read the
  1825.         htdocs/manual/suexec.html document before using the suexec-related
  1826.         configure options.
  1827.      2. Make sure the user has at least provided one --suexec-xxxx option
  1828.         (specifies suEXEC parameters) in addition to --enable-suexec option.
  1829.         If only --enable-suexec is given APACI stops with a hint to INSTALL
  1830.         and htdocs/manual/suexec.html documents.
  1831.      3. Provide two additional --suexec-xxxx options to make the suEXEC
  1832.         configuration complete (especially for package maintainers who else
  1833.         had to patch the source tree) by providing ways to configure minimal
  1834.         UID/GID and safe PATH, too.
  1835.      [Ralf S. Engelschall]
  1836.  
  1837.   *) Cleanup of the `configure --shadow' process:
  1838.      - make sure the configure script creates its temporary files in the
  1839.        shadow tree to avoid conflicts with parallel configure runs
  1840.      - removed unnecessary option "-r" from "rm" call for Makefiles
  1841.      - make sure the configure scripts creates the shadow-wrapper Makefile
  1842.        only when no shadow trees already exists
  1843.      - make sure "make distclean" removes the shadow-wrapper Makefile but only
  1844.        when no more shadow trees exists
  1845.      - overhauled mkshadow.sh script: now its more IFS-safe and approx. twice
  1846.        as fast (in the past it needed 70sec, now it runs just 38sec)
  1847.      - make sure CVS does not complain about the created files
  1848.        Makefille.<gnutriple> and directories src.<gnutriple>
  1849.      [Ralf S. Engelschall]
  1850.  
  1851.   *) Added the ap_add_version_component() API routine and the
  1852.      AddVersionPlatform core directive.  The first allows modules to
  1853.      declare themselves in the Server response header field value,
  1854.      augmenting the SERVER_SUBVERSION define in the Configuration file
  1855.      with run-time settings (more useful in a loadable-module environment).
  1856.      AddVersionPlatform inserts a comment such as "(UNIX)" or "(Win32)"
  1857.      into the server version string.  [Ken Coar] PR#2056
  1858.  
  1859.   *) Minor stability tweaks to avoid core dumps in ap_snprintf.
  1860.      [Martin Kraemer]
  1861.  
  1862.   *) Emit the "Accept-Range" header for the default handler.
  1863.      [Brian Behlendorf] PR#1464
  1864.  
  1865.   *) Add a note to httpd.conf-dist that apache will on some systems fail
  1866.      to start when the Group # is set to a negative or large positive value.
  1867.      [Martin Kraemer]
  1868.  
  1869.   *) Make sure the module execution order is correct even when some modules
  1870.      are loaded under runtime (`LoadModule') via the DSO mechanism:
  1871.      1. The list of loaded modules is now a dynamically allocated one
  1872.         and not the original statically list from modules.c
  1873.      2. The loaded modules are now correctly setup by LoadModule for
  1874.         later use by the AddModule command.
  1875.      3. When the DSO mechanism for modules is used APACI's `install'
  1876.         target now enables all created `LoadModule' lines per default because
  1877.         this is both already expected by the user _and_ needed to avoid
  1878.         confusion with the next point and reduces the Makefile.tmpl complexity
  1879.      4. When the DSO mechanism for modules is used, APACI's `install'
  1880.         target now additionally makes sure the module list is reconstructed
  1881.         via a complete `ClearModuleList+AddModule...' entry.
  1882.      5. The support tool `apxs' now also makes sure an AddModule command
  1883.         is added in addition to the LoadModule command.
  1884.      6. The modules.c generation was extended to now contain two
  1885.         comments to make sure no one is confused by the confusing terminology
  1886.         of loading/linking (we use load=link+load & link=activate instead of
  1887.         the obvious load=activate & link=link :-( )
  1888.      This way now there is no longer a difference under execution time between
  1889.      statically and dynamically linked modules.
  1890.      [Ralf S. Engelschall]
  1891.  
  1892.   *) Fix the generated mod_xxx.c from "apxs -g -f xxx" after the
  1893.      Big Symbol Renaming. [Ralf S. Engelschall]
  1894.  
  1895.   *) Add a comment to mod_example.c showing the format of a FLAG command
  1896.      handler.  [Ken Coar]
  1897.  
  1898.   *) Standardized the time format in mod_status to match that of other 
  1899.      places in the code (e.g. DATE_GMT).  PR#1551
  1900.  
  1901.   *) Fix handling of %Z in timefmt strings for those platforms with no time
  1902.      zone information in their tm struct. [Paul Eggert <eggert@twinsun.com>]
  1903.      PR#754
  1904.  
  1905.   *) Makes mod_rewrite, mod_log_config, mod_status and the ServerSignature 
  1906.      feature compatible with 'UseCanonicalName off' by changing  
  1907.      r->server->server_hostname to ap_get_server_name().  And I changed some 
  1908.      functions which use r->server->port to use ap_get_server_port() instead, 
  1909.      because if there's no Port directive in the config r->server->port is 0.
  1910.      [Lars Eilebrecht]
  1911.  
  1912.   *) get/set_module_config are trivial enough to be better off inline.  Worth
  1913.      1.5% performance boost. [Dean Gaudet]
  1914.  
  1915.   *) Fix off-by-one error in ap_proxy_date_canon() in proxy_util.c
  1916.      when ensuring 'x' is at least 30-chars big. [Jim Jagielski,
  1917.      Brian Behlendorf]
  1918.  
  1919.   *) [BS2000 security] BS2000 needs an extra authentication to initialize
  1920.      the task environment to the unprivileged User id. Otherwise CGI scripts
  1921.      would have a way to gain super user access. [Martin Kraemer]
  1922.  
  1923.   *) Fix debug log messages for BS2000/OSD: instead of logging the whole
  1924.      absolute path, only log base name of logging source as is done
  1925.      in unix. [Martin Kraemer]
  1926.  
  1927.   *) Ronald Tschalaer's Accept-Encoding patch - preserve the "x-" in
  1928.      the encoding type from the Accept-Encoding header (if it's there)
  1929.      and use it in the response, as that's probably what it'll be expecting.
  1930.      [Ronald.Tschalaer@psi.ch]
  1931.  
  1932.   *) Fix to mod_alias: translate_alias_redir is dealing with
  1933.      a URI, not a filename, so the check for drive letters for win32 
  1934.      and emx is not necessary. [Dean Gaudet]
  1935.  
  1936.   *) WIN32: Allow .cmd as an executable extension.
  1937.      [Kari Likovuori <Kari.Likovuori@mol.fi>] PR#2146
  1938.  
  1939.   *) Make Apache header files, and some variables, C++ friendly.
  1940.      [Michael Anderson's <mka@redes.int.com.mx>]
  1941.  
  1942.   *) Child processes can now "signal" (by exiting with a status
  1943.      of APEXIT_CHILDFATAL) the parent process to abort and
  1944.      shutdown the server if the error in the child process was
  1945.      fatal enough. [Jim Jagielski]
  1946.  
  1947.   *) mod_autoindex's find_itme() was sensitive to MIME type case.
  1948.      [Jim Jagielski] PR#2112
  1949.  
  1950.   *) Make sure the referer_log and agent_log entries in the default httpd.conf
  1951.      file are also adjusted for the actual relative installation paths.
  1952.      [Ralf S. Engelschall] PR#2175
  1953.  
  1954.   *) WIN32: Extensive overhaul of the way UNCs are handled. [Ben Laurie]
  1955.  
  1956.   *) WIN32: Make roots of filesystems (e.g. c:/) work. [Ben Laurie]
  1957.      PR#1558
  1958.  
  1959.   *) PORT: Various porting changes to support AIX 3.2, 4.1.5, 4.2 and 4.3.
  1960.      Additionally the checks for finding the vendor DSO library were moved
  1961.      from mod_so.c to Configure because first it needs $PLAT etc. and second
  1962.      mod_so already uses an abstraction layer and does not fiddle with the
  1963.      vendor functions itself.
  1964.      [Jens-Uwe Mager, Ralf S. Engelschall]
  1965.  
  1966.   *) PORT: Some optimization defines for NetBSD
  1967.      [Jaromir Dolecek <dolecek@ics.muni.cz>] PR#2165
  1968.  
  1969.   *) PORT: Dynamic Shared Object (DSO) support for NetBSD.
  1970.      [Jaromir Dolecek <dolecek@ics.muni.cz>, Ralf S. Engelschall] PR#2158
  1971.  
  1972.   *) Add Dynamic Shared Object (DSO) support for AIX (at least 4.2 but older
  1973.      AIX variants should work fine, too. Even AIX 3.x should work). This is
  1974.      accomplished by using the free DSO emulation code from Jens-Uwe Mager
  1975.      which we put into a os/unix/os-dso-aix.c file.
  1976.      [Ralf S. Engelschall]
  1977.   
  1978.   *) PORT: Fix compiler warnings under AIX >= 4.2 where the manual pages imply
  1979.      that we should use NET_SIZE_T == int but the include files force size_t.
  1980.      [Ralf S. Engelschall]
  1981.  
  1982.   *) Fix two bugs in select() handling in http_main.c.
  1983.      [Roy Fielding]
  1984.  
  1985.   *) Suppress "error(0)" messages for ap_log_error() when the APLOG_NOERRNO
  1986.      is unset (as it is in situations like timeouts) where it is unclear
  1987.      whether errno is set or not.  [Martin Kraemer]
  1988.  
  1989.   *) Just having APACI's localstatedir is too general and not enough for most
  1990.      of the systems. 1.3b6 again required manual APACI patches by package
  1991.      maintainers from RedHat and FreeBSD because for their filesystem layout a
  1992.      little bit more flexibility in configuring the paths is needed. Hence we
  1993.      provide three additional configure options (--runtimedir, --logfiledir,
  1994.      --proxycachedir) which now can be used for more granular adjustments if
  1995.      --localstatedir is not enough to fit the particular needs. As a nice
  1996.      side-effect this reduces some subdir fiddling in configure+Makefile.tmpl.
  1997.      [Ralf S. Engelschall]
  1998.  
  1999.   *) Make the install root for "make install" in APACI's Makefile overrideable
  2000.      by package authors.  This way we are even more friendly to package
  2001.      maintainers (especially Debian and RedHat) who build for the real prefix
  2002.      via "configure --prefix=/<real>" but use a different local prefix via
  2003.      "make root=/tmp/apache install" for rolling the package without bristling
  2004.      the target location on their system. 
  2005.      [Ralf S. Engelschall]
  2006.  
  2007.   *) Workaround sed limitations in APACI's configure script by now
  2008.      substituting in chunks of 50 commands (because for instance HPUX's vendor
  2009.      sed has a limit of max. 98 commands)
  2010.      [Ralf S. Engelschall] PR#2136
  2011.  
  2012.   *) Adding SOCKS5 support and fixing existing SOCKS4 support.
  2013.      [Ralf S. Engelschall] PR#2140
  2014.  
  2015.   *) Manually fix some symbols which were not renamed to prefix ap_ in the BIG
  2016.      RENAMING process because they are defined as pre-processor macros instead
  2017.      of real functions: bputc, bgetc, piped_log_write_fd, piped_log_read_fd
  2018.      [Ralf S. Engelschall]
  2019.  
  2020.   *) Workaround braindead AWK's when generating ap_config.h: The split() and
  2021.      substr() functions cannot be nested under vendor AWK from Solaris 2.6.
  2022.      [Ralf S. Engelschall] PR#2139
  2023.  
  2024.   *) Various bugfixes and cleanups for the APACI configure script:
  2025.      o fix IFS handling for _nested_ situation
  2026.      o fix Perl interpreter search: take first one found instead of last one
  2027.      o fix DSO consistency check
  2028.      o print error messages to stderr instead of stdout
  2029.      o add install-quiet for --shadow situation to Makefile stub
  2030.      o reduce complexity by avoiding sed-hacks for rule and module list loops
  2031.      [Ralf S. Engelschall]
  2032.  
  2033.   *) Fix DEBUG_CGI situation in mod_cgi.c [David MacKenzie] PR#2114
  2034.  
  2035.   *) Make sure the input field separator (IFS) shell variable is explicitly
  2036.      initialized correctly before _every_ `for' loop and also restored after
  2037.      the loops. [Ralf S. Engelschall]
  2038.  
  2039.   *) Make sure that "make install" doesn't overwrite the `mime.types' and
  2040.      `magic' files from an existing Apache installation. Because people often
  2041.      customize these for own MIME and content types.
  2042.      [Ralf S. Engelschall]
  2043.  
  2044.   *) PORT: Dynamic Shared Object (DSO) support for OpenBSD 2.x
  2045.      [Peter Galbavy, Ralf S. Engelschall] PR#2109
  2046.  
  2047.   *) Fix the path to the ScoreBoardFile in the install-config target, too.
  2048.      [Ralf S. Engelschall] PR#2105
  2049.  
  2050.   *) Let "configure" clear out the users parameters (provided as shell
  2051.      variables) to avoid side-effects in "src/Configure" when the user
  2052.      exported them (which is not needed, but some users do it). 
  2053.      [Ralf S. Engelschall] PR#2101
  2054.  
  2055.   *) Provide backward compatibility from some old src/Configuration.tmpl
  2056.      parameter names to the canonical Autoconf-style shell variable names. For
  2057.      instance CFLAGS vs. EXTRA_CFLAGS. The EXTRA_xxx variants are accepted now
  2058.      but a hint message is displayed. [Ralf S. Engelschall]
  2059.   
  2060.   *) Make sure that "make install" doesn't overwrite the DocumentRoot and
  2061.      CGI scripts from an existing Apache installation. 
  2062.      [Ralf S. Engelschall, Jim Jagielski] PR#2084
  2063.  
  2064.   *) Make `configure --compat' more "compatible" by first 
  2065.      let the libexecdir default to EPREFIX/libexec instead of EPREFIX/bin and
  2066.      second by making sure the "avoid-bristling-suffix" /apache is not
  2067.      appended to sysconfdir, datadir, localstatedir and includedir when
  2068.      --compat is used. [Ralf S. Engelschall, Lars Eilebrecht]
  2069.  
  2070.   *) NeXT required strdup() in support/logresolve.c
  2071.      [Francisco Tomei <fatomei@sandburg.unm.edu>] PR#2082
  2072.  
  2073.   *) AIX required sys/select.h in support/ab.c
  2074.      [Jens Schleusener <Jens.Schleusener@dlr.de>] PR#2081
  2075.  
  2076.   *) Fix the path to the MimeMagicFile in the install-config target, too.
  2077.      [Ralf S. Engelschall] PR#2089
  2078.  
  2079.   *) PORT: Added HP-UX 11 patches [Jeff Earickson <jaearick@colby.edu>]
  2080.  
  2081.   *) If you start apache with the -S command line option it will dump
  2082.      out the parsed vhost settings.  This is useful for folks trying
  2083.      to figure out what is wrong with their vhost configuration.
  2084.      (Other dumps may be added in the future.) [Dean Gaudet]
  2085.  
  2086.   *) Add %pA, %pI, and %pp codes to ap_vformatter (and hence ap_bprintf,
  2087.      ap_snprintf, and ap_psprintf).  See include/ap.h for docs.
  2088.      [Dean Gaudet]
  2089.  
  2090.   *) Because /usr/local/apache is the default prefix the ``configure
  2091.      --compat'' option no longer has to set prefix, again. This way the
  2092.      --compat option honors a leading --prefix option. [Lars Eilebrecht]
  2093.  
  2094.   *) PORT: Cast the first argument of dlopen() in ap_os_dso_load()
  2095.      to `char *' under OSF1 and FreeBSD 2.x where it is defined this way
  2096.      to avoid "discard const" warnings. [Ralf S. Engelschall]
  2097.  
  2098.   *) If a specific handler is set for a file yet the request still
  2099.      ends up being handled by the default handler, log an error
  2100.      message before handling it.  This catches things such as trying 
  2101.      to use SSIs without mod_include enabled.  [Marc Slemko]
  2102.  
  2103.   *) Fix error logging for the startup case where ap_log_error() still uses
  2104.      stderr as the target. Now the default log level is honored here, too.
  2105.      [Ralf S. Engelschall]
  2106.     
  2107.   *) PORT: Make sure some AWK's don't fail in src/Configure with "string too
  2108.      long" errors when generating the MODULES entry for src/Makefile
  2109.      [Ben Hyde, Ralf S. Engelschall]
  2110.  
  2111.   *) Make sure src/Configure doesn't complain about the old directory
  2112.      /usr/local/etc/httpd/ when APACI is used.  [Lars Eilebrecht]
  2113.    
  2114. Changes with Apache 1.3b6
  2115.  
  2116.   *) PORT: Clean up warnings on Ultrix and HPUX.  [Ben Hyde]
  2117.  
  2118.   *) Adding DSO support for the HP/UX platform by emulating the dlopen-style
  2119.      interface via the similar but proprietary HP/UX shl_xxx-style system
  2120.      calls. [Ralf S. Engelschall]
  2121.  
  2122.   *) PORT: Updated UnixWare 2.0.x and 2.1.x entries for DSO support and made
  2123.      APACI Makefile.tmpl "install" target more robust for sensible UnixWare
  2124.      Make. [Ralf S. Engelschall]
  2125.  
  2126.   *) ++++ THE BIG SYMBOL RENAMING ++++
  2127.      To avoid symbol clashes with third-party code compiled into the server,
  2128.      we globally applied the prefix "ap_" to the following classes of
  2129.      functions:
  2130.         - Apache provided general functions (e.g., ap_cpystrn)
  2131.         - Public API functions (e.g., palloc, bgets)
  2132.         - Private functions which we can't make static (because of
  2133.           cross-object usage) but should be (e.g., new_connection)
  2134.      For backward source compatibility a new header file named compat.h was
  2135.      created which provides defines for the old symbol names and can be used
  2136.      by third-party module authors.
  2137.      [The Apache Group]
  2138.  
  2139.   *) Added dynamic shared object (DSO) support for SVR4-derivates: The
  2140.      problem under SVR4 is that there is no command flag to force the linker
  2141.      to export the global symbols of the httpd executable therewith they are
  2142.      available to the DSO's. Instead of problematic hacks like creating a
  2143.      dummy.so file (containing dummy references to all global symbols) the
  2144.      httpd binary is linked against, we use a clean trick stolen from Perl 5:
  2145.      Placing the Apache core code itself into a DSO library named libhttpd.so.
  2146.      This way the global symbols _HAVE_ to be exported and thus are available
  2147.      to any manually loaded DSO's under runtime. To reduce the impact to the
  2148.      user to null we go even further and create a stub httpd executable which
  2149.      automatically keeps track of the DSO library loading itself and thus
  2150.      hides the complete mechanism from the user. Although the generation of
  2151.      this DSO library is automatically triggered for platforms which
  2152.      essentially need it (mostly all SVR4-derivates) it can be also enabled
  2153.      manually via the Rule SHARED_CORE. This can be interesting in the future
  2154.      where we perhaps exploit this libhttpd.so mechanism for providing nifty
  2155.      features like graceful upgrades, or whatever. 
  2156.      [Ralf S. Engelschall, Martin Kraemer]
  2157.  
  2158.   *) Build the libraries before building the rest of the tools. [Ben Hyde]
  2159.  
  2160.   *) Add "distclean" target to src/-Makefiles to provide "make distclean" also
  2161.      inside the src subtree (i.e. for non-APACI users). Following GNU Makefile
  2162.      conventions while "clean" removes only stuff created by "all" targets,
  2163.      "distclean" additionally removes the stuff from the configuration
  2164.      process. This way "make distclean" (hence the name) provides a fresh
  2165.      source tree as it was for distribution.
  2166.      [Ralf S. Engelschall]
  2167.  
  2168.   *) Allow top-level (APACI) Makefile to break on build errors
  2169.      the same way the src/ subtree Makefiles breaks on them by replacing the
  2170.      initial APACI sed-subdir-display-kludge with a more clean
  2171.      variable-passing-solution: variable SDP can optionally hold the subdir
  2172.      prefix which is consistently used for displaying the subdir movement.
  2173.      This way even the top-level Makefile can stop correctly on errors as the
  2174.      user expects. [Ralf S. Engelschall]
  2175.  
  2176.   *) Fixed ordering of argument checks for RewriteBase directive.
  2177.      [Todd Eigenschink <eigenstr@mixi.net>] PR#2045
  2178.  
  2179.   *) Change Win32 IS_MODULE to SHARED_MODULE to match Unix' method of
  2180.      indicating that a module is being compiled for dynamic loading. Also
  2181.      remove #define IS_MODULE from modules and add SHARED_MODULE define
  2182.      to the mak/dsp files. [Alexei Kosut]
  2183.  
  2184.   *) Reduce logging level of "normal" warning messages to APLOG_INFO,
  2185.      since we are now logging APLOG_WARNING by default. [Roy Fielding]
  2186.  
  2187.   *) PORT: OS/2 tweak to deal with multiple .exe targets. [Brian Havard]
  2188.  
  2189.   *) Add documentation file and src/Configuration.tmpl entry for the
  2190.      experimental mod_mmap_static module. Because although it is and marked as
  2191.      an experimental one it is distributed and thus should be documented and
  2192.      prepared for configuration the same way as all others modules. 
  2193.      [Ralf S. Engelschall]
  2194.  
  2195.   *) Add query (-q) option to apxs support tool to be able to manually query
  2196.      specific settings from apxs. This is needed for instance when you
  2197.      manually want to access Apache's header files and you need to assemble
  2198.      the -I option.  Now you can do -I`apxs -q INCLUDEDIR`.
  2199.      [Ralf S. Engelschall]
  2200.  
  2201.   *) Now src/Configure uses a fallback strategy for the shared object support
  2202.      on platforms where no explicit information is available: If a Perl
  2203.      installation exists we ask it about its shared object support and if it's
  2204.      the dlopen-style one we shamelessly guess the compiler and linker flags
  2205.      for creating shared objects from Perls knowledge. Of course, the user is
  2206.      warning about what we are doing and informed that he should send us
  2207.      the guessed flags when they work. [Ralf S. Engelschall]
  2208.  
  2209.   *) Provide APACI --without-support option to be able to disable the build
  2210.      and installation of the support tools from the src/support/ area.
  2211.      Although its useful to have these installed per default we should provide
  2212.      a way to compile and install without them for backward-compatibility.
  2213.      [Ralf S. Engelschall]
  2214.  
  2215.   *) Add of the new APache eXtenSion (apxs) support tool for building and
  2216.      installing modules into an _already installed_ Apache package through the
  2217.      dynamic shared object (DSO) mechanism [mod_so.c]. The trick here is that
  2218.      this approach actually doesn't need the Apache source tree.  The
  2219.      (APACI-installed) server package is enough, because this now includes the
  2220.      Apache C header files (PREFIX/include) and the new APXS tool
  2221.      (SBINDIR/apxs).  The intend is to provide a handy tool for third-party
  2222.      module authors to build their Apache modules _OUTSIDE_ the Apache source
  2223.      tree while avoiding them to fiddle around with the totally platform
  2224.      dependend way of compiling DSO files. The tool supports all ranges of
  2225.      modules, from trivial ones (single mod_foo.c) to complex ones (like PHP3
  2226.      which has a mod_php3.c plus a pre-built libmodphp3-so.a) and even can
  2227.      on-the-fly generate a minimalistic Makefile and sample module for the
  2228.      first step to provide both a quick success event and to demonstrate the
  2229.      APXS mechanism to module authors. [Ralf S. Engelschall]
  2230.  
  2231.   *) Fix core dumps in use of CONNECT in proxy.  
  2232.      [Rainer.Scherg@rexroth.de] PR#1326, #1573, #1942
  2233.  
  2234.   *) Modify the log directives in httpd.conf-dist files to use CustomLog
  2235.      so that users have examples of how CustomLog can be used.
  2236.      [Lars Eilebrecht]
  2237.  
  2238.   *) Add the new Apache Autoconf-style Interface (APACI) for the top-level of
  2239.      the Apache distribution tree.  Until Apache 1.3 there was no real
  2240.      out-of-the-box batch-capable build and installation procedure for the
  2241.      complete Apache package. This is now provided by a top-level "configure"
  2242.      script and a corresponding top-level "Makefile.tmpl" file.  The goal is
  2243.      to provide a GNU Autoconf-style frontend which is capable to both drive
  2244.      the old src/Configure stuff in batch and additionally installs the
  2245.      package with a GNU-conforming directory layout. Any options from the old
  2246.      configuration scheme are available plus a lot of new options for flexibly
  2247.      customizing Apache. [Ralf S. Engelschall]
  2248.  
  2249.   *) The floating point ap_snprintf code wasn't threadsafe.
  2250.      Had to remove the HAVE_CVT macro in order to do threadsafe
  2251.      calling of the ?cvt() floating point routines.  [Dean Gaudet]
  2252.  
  2253.   *) PORT: Add the SCO_SV port. [Jim Jagielski] PR#1962
  2254.  
  2255.   *) PORT: IRIX needs the -n32 flag iff using the 'cc' compiler
  2256.      [Jim Jagielski] PR#1901
  2257.  
  2258.   *) BUG: Configure was using TCC and CC inconsistantly. Make sure
  2259.      Configure knows which CC we are using. [Jim Jagielski]
  2260.  
  2261.   *) "Options +Includes" wasn't correctly merged if "+IncludesNoExec"
  2262.      was defined in a parent directory. [Lars Eilebrecht]
  2263.  
  2264.   *) API: ap_snprintf() code mutated into ap_vformatter(), which is
  2265.      a generic printf-style routine that can call arbitrary output
  2266.      routines.  Use this to replace http_bprintf.c.  Add new routines
  2267.      psprintf(), pvsprintf() which allocate the exact amount of memory
  2268.      required for a string from a pool.  Use psprintf() to clean up
  2269.      various bits of code which used ap_snprintf()/pstrdup().
  2270.      [Dean Gaudet]
  2271.  
  2272.   *) PORT: HAVE_SNPRINTF doesn't do anything any longer.  This is because
  2273.      ap_snprintf() has different semantics and formatting codes than
  2274.      snprintf().  [Dean Gaudet]
  2275.  
  2276.   *) SIGXCPU and SIGXFSZ are now reset to SIG_DFL at boot-time.  This
  2277.      is necessary on at least Solaris where the /etc/rc?.d scripts
  2278.      are run with these signals ignored, and "SIG_IGN" settings are
  2279.      maintained across exec().
  2280.      [Rein Tollevik <reint@sys.sol.no>] PR#2009
  2281.  
  2282.   *) Fix the check for symbolic links in ``RewriteCond ... -l'': stat() was
  2283.      used instead of lstat() and thus this flag didn't work as expected.
  2284.      [Rein Tollevik <reint@sys.sol.no>] PR#2010
  2285.  
  2286.   *) Fix the proxy pass-through feature of mod_rewrite for the case of
  2287.      existing QUERY_STRING now that mod_proxy was recently changed because of
  2288.      the new URL parsing stuff. [Ralf S. Engelschall]
  2289.  
  2290.   *) A few changes to scoreboard definitions which helps gcc generate
  2291.      better code.  [Dean Gaudet]
  2292.  
  2293.   *) ANSI C doesn't guarantee that "int foo : 2" in a structure will
  2294.      be a signed bitfield.  So mark a few bitfields as signed to
  2295.      ensure correct code.  [Dean Gaudet]
  2296.  
  2297.   *) The default for HostnameLookups was changed to Off, but there
  2298.      was a problem and it wasn't taking effect. [Dean Gaudet]
  2299.  
  2300.   *) PORT: Clean up undefined signals on some platforms (SCO, BeOS).
  2301.      [Dean Gaudet]
  2302.  
  2303.   *) After a SIGHUP the listening sockets in the parent weren't
  2304.      properly marked for closure on fork().
  2305.      [Jⁿrgen Keil <jk@tools.de>] PR#2000
  2306.  
  2307.   *) Allow %2F in two situations: 1) it is in the query part of the URI,
  2308.      therefore not exposed to %2F -> '/' translations and 2) the request
  2309.      is a proxy request, so we're not dealing with a local resource anyway.
  2310.      Without this, the proxy would fail to work for any URL's with
  2311.      %2f in them (occurs quite often in
  2312.      http://.../cgi-bin/...?http%3A%2F%2F... references) [Martin Kraemer]
  2313.  
  2314.   *) Protect against FD_SETSIZE mismatches.  [Dean Gaudet]
  2315.  
  2316.   *) Make the shared object compilation command more portable by avoiding
  2317.      the direct combination of `-c' & `-o' which is not honored by some
  2318.      compilers like UnixWare's cc. [Ralf S. Engelschall]
  2319.  
  2320.   *) WIN32: the proxy was creating filenames missing the last four
  2321.      characters.  While this normally doesn't stop anything from 
  2322.      working, it can result in extra collisions.  
  2323.      [Tim Costello <tjcostel@socs.uts.edu.au>] PR#1890
  2324.  
  2325.   *) Now mod_proxy uses the response string (in addition to the response status
  2326.      code) from the already used FTP SIZE command to setup the Content-Length
  2327.      header if available. [Ralf S. Engelschall] PR#1183
  2328.  
  2329.   *) Reanimated the (still undocumented) proxy receive buffer size directive:
  2330.      Renamed from ReceiveBufferSize to ProxyReceiveBufferSize because the old
  2331.      name was really too generic, added documentation for this directive to
  2332.      the mod_proxy.html and corrected the hyperlink to it in the
  2333.      new_features_1.3.html document.  [Ralf S. Engelschall] PR#1348
  2334.  
  2335.   *) Fix a bug in the src/helpers/fp2rp script and make it a little bit
  2336.      faster [Martin Kraemer]
  2337.   
  2338.   *) Make Configure die when you give it an unknown command switch.
  2339.      [Ben Hyde]
  2340.  
  2341.   *) Add five new and fresh manpages for the support programs: dbmmanage.1,
  2342.      suexec.8, htdigest.1, rotatelogs.8 and logresolve.8.  Now all up-to-date
  2343.      and per default compiled support programs have manual pages - just to
  2344.      document our stuff a little bit more and to be able to do really
  2345.      Unix-like installations ;-) [Ralf S. Engelschall]
  2346.  
  2347.   *) Major cleanups to the Configure script to make it and its generated
  2348.      Makefiles again readable and maintainable: add SRCDIR option, removed
  2349.      INCLUDES_DEPTH[0-2] kludge, cleanup of TARGET option, cleanup of
  2350.      generated sections, consequently added Makefile headers with inheritance
  2351.      information, added subdir movement messages for easier following where
  2352.      the build process currently stays (more verbose then standard Make, less
  2353.      verbose than GNU make), same style to comments in the Configure script,
  2354.      added Apache license header, fixed a few bugs, etc. [Ralf S. Engelschall]
  2355.      
  2356.   *) Add the new ApacheBench program "ab" to src/support/: This is derived
  2357.      from the ZeusBench benchmarking program and can be used to determine the
  2358.      response performance of an Apache installation. This version is
  2359.      officially licensed with Zeus Technology, Ltd. See the license agreement
  2360.      statements in <199803171224.NAA24547@en1.engelschall.com> in apache-core.
  2361.      [Ralf S. Engelschall]
  2362.  
  2363.   *) API: Various core functions that are definately not part of the API
  2364.      have been made static, and a few have been marked API_EXPORT.  Still
  2365.      more have been marked CORE_EXPORT and are not intended for general
  2366.      use by modules.  [Doug MacEachern, Dean Gaudet]
  2367.  
  2368.   *) mod_proxy was not clearing the Proxy-Connection header from
  2369.      requests; now it does.  This did not violate any spec, however 
  2370.      causes poor interactions when you are talking to remote proxies.  
  2371.      [Marc Slemko] PR#1741
  2372.  
  2373.   *) Various cleanups to the command line interface and manual pages.
  2374.      [Ralf S. Engelschall]
  2375.  
  2376.   *) cfg_getline() was not properly handling lines that did not end
  2377.      with a line termination character.  [Marc Slemko] PR#1869, 1909
  2378.  
  2379.   *) Performance tweak to mod_log_config.  [Dmitry Khrustalev]
  2380.  
  2381.   *) Clean up some undocumented behavior of mod_setenvif related to
  2382.      "merging" two SetEnvIf directives when they match the same header
  2383.      and regex.  Document that mod_setenvif will perform comparisons in
  2384.      the order they appear in the config file.  Optimize mod_setenvif by
  2385.      doing more work at config time rather than at runtime.
  2386.      [Dean Gaudet]
  2387.  
  2388.   *) src/include/ap_config.h now wraps it's #define's with #ifndef/#endif's
  2389.      to allow for modules to overrule them and to reduce redefinition
  2390.      warnings [Jim Jagielski]
  2391.  
  2392.   *) [PORT] For A/UX change the OS-#define for -DAUX to -DAUX3.
  2393.      [Jim Jagielski]
  2394.  
  2395.   *) Making the hard-coded cross-module function call mime_find_ct() (from
  2396.      mod_proxy to mod_mime) obsolete by making sure the API hook for MIME type
  2397.      checking is really called even for proxy requests except for URLs with
  2398.      HTTP schemes (because there we can optimize by not running the type
  2399.      checking hooks due to the fact that the proxy gets the MIME Content-type
  2400.      from the remote host later). This change cleans up mod_mime by removing
  2401.      the ugly export kludge, makes the one-liner file mod_mime.h obsolete, and
  2402.      especially unbundles mod_proxy and mod_mime. This way they both now can
  2403.      be compiled as shared objects and are no longer tied together. 
  2404.      [Ralf S. Engelschall]
  2405.  
  2406.   *) util.c cleanup and speedup. [Dean Gaudet]
  2407.  
  2408.   *) API: Clarification, pstrndup() will always copy n bytes of the source
  2409.      and NUL terminate at the (n+1)st byte.  [Dean Gaudet]
  2410.  
  2411.   *) Mark module command_rec and handler_rec structures const so that they
  2412.      end up in the read-only data section (and are friendlier to systems
  2413.      that don't do optimistic memory allocation on fork()). [Dean Gaudet]
  2414.  
  2415.   *) Add check to the "Port" directive to make sure the specified 
  2416.      port is in the appropriate range.  [Ben Hyde]
  2417.  
  2418.   *) Performance improvements to invoke_handler().
  2419.      [Dmitry Khrustalev <dima@bog.msu.su>]
  2420.  
  2421.   *) Added support for building shared objects even for library-style modules
  2422.      (which are built from more than one object file). This now provides the
  2423.      ability to build mod_proxy as a shared object module. Additionally
  2424.      modules like mod_example are now also supported for shared object
  2425.      building because the generated Makefiles now no longer assume there is at
  2426.      least one statically linked module. [Ralf S. Engelschall]
  2427.  
  2428.   *) API: Clarify usage of content_type, handler, content_encoding,
  2429.      content_language and content_languages fields in request_rec.  They
  2430.      must always be lowercased; and the strings pointed to shouldn't
  2431.      be modified (you must copy them to modify them).  Fix a few bugs
  2432.      related to this.  [Dean Gaudet]
  2433.  
  2434.   *) API: Clarification: except for RAW_ARGS, all command handlers can
  2435.      treat the char * parameters as permanent, and modifiable.  There
  2436.      is no need to pstrdup() them.  Clean up some needless pstrdup().
  2437.      [Dean Gaudet]
  2438.  
  2439.   *) Now mod_so keeps track of which module shared objects with which names
  2440.      are loaded and thus avoids multiple loading and unloading and irritating
  2441.      error_log messages. [Ralf S. Engelschall]
  2442.  
  2443.   *) Prior to the existence of mod_setenv it was necessary to tweak the TZ
  2444.      environment variable in the apache core.  But that tweaking interferes
  2445.      with mod_setenv.  So don't tweak if the user has specified an explicit
  2446.      TZ variable.  [Jay Soffian <jay@cimedia.com>] PR#1888
  2447.  
  2448.   *) rputs() did not calculate r->sent_bodyct properly.
  2449.      [Siegmund Stirnweiss <siegst@kat.ina.de>] PR#1900
  2450.  
  2451.   *) The CGI spec says that REMOTE_HOST should be set to the remote hosts's
  2452.      name, or left unset if this value is unavailable.  Apache was setting
  2453.      it to the IP address when unavailable.
  2454.      [Tony Finch <fanf@demon.net>] PR#1925
  2455.  
  2456.   *) Various improvements to the configuration and build support for compiling
  2457.      modules as shared objects. Especially Solaris 2.x, SunOS 4.1, IRIX and
  2458.      OSF1 support with GCC and vendor compilers was added.  This way shared
  2459.      object support is now provided out-of-the-box for FreeBSD, Linux,
  2460.      Solaris, SunOS, IRIX and OSF1. In short: On all major platforms!
  2461.      [Ralf S. Engelschall]
  2462.  
  2463.   *) Minor cleanup in http_main -- split QNX and OS2 specific "mmap"
  2464.      scoreboard code into separate #defines -- USE_POSIX_SCOREBOARD
  2465.      and USE_OS2_SCOREBOARD.  [Dean Gaudet]
  2466.  
  2467.   *) Fix one more special locking problem for RewriteMap programs in
  2468.      mod_rewrite: According to the documentation of flock(), "Locks are on
  2469.      files, not file descriptors.  That is, file descriptors duplicated
  2470.      through dup(2) or fork(2) do not result in multiple instances of a lock,
  2471.      but rather multiple references to a single lock. If a process holding a
  2472.      lock on a file forks and the child explicitly unlocks the file, the
  2473.      parent will lose its lock.". To overcome this we have to make sure the
  2474.      RewriteLock file is opened _AFTER_ the childs were spawned which is now
  2475.      the case by opening it in the child_init instead of the module_init API
  2476.      hook. [Ralf S. Engelschall] PR#1029
  2477.  
  2478.   *) Change to Location and LocationMatch semantics.  LocationMatch no
  2479.      longer lets a single slash match multiple adjacent slashes in the
  2480.      URL.  This change is for consistency with RewriteRule and
  2481.      AliasMatch.  Multiple slashes have meaning in URLs that they do
  2482.      not have in (some) filesystems.  Location on the other hand can
  2483.      be considered a shorthand for a more complicated regex, and it
  2484.      does match multiple slashes with a single slash -- which is
  2485.      also consistent with the Alias directive.
  2486.      [Dean Gaudet] related PR#1440
  2487.  
  2488.   *) Fix bug with mod_mime_magic causing certain files, including files
  2489.      of length 0, to result in no response from the server.
  2490.      [Dean Gaudet]
  2491.  
  2492.   *) The Configure script now generates src/include/ap_config.h which
  2493.      contains the set of defines used when Apache is compiled on a platform.
  2494.      This file can then be included by external modules before including
  2495.      any Apache header files in case they are being built separately from
  2496.      Apache.  Along with this change, a couple of minor changes were
  2497.      made to make Apache's #defines coexist peacefully with any autoconf
  2498.      defines an external module might have. [Rasmus Lerdorf]
  2499.  
  2500.   *) Fix mod_rewrite for the ugly API case where <VirtualHost> sections exist
  2501.      but without any RewriteXXXXX directives. Here mod_rewrite is given no
  2502.      chance by the API to initialize its per-server configuration and thus
  2503.      receives the wrong one from the main server. This is now avoided by
  2504.      remembering the server together with the config structure while
  2505.      configuring and later assuming there is no config when we see a
  2506.      difference between the remembered server and the one calling us. 
  2507.      [Ralf S. Engelschall] PR#1790
  2508.  
  2509.   *) Fixed the DBM RewriteMap support for mod_rewrite: First the support now
  2510.      is automatically disabled under configure time when the dbm_xxx functions
  2511.      are not available. Second, two heavy source code errors in the DBM
  2512.      support code were fixed.  This makes DBM RewriteMap's usable again after
  2513.      a long time of brokenness. [Ralf S. Engelschall] PR#1696
  2514.  
  2515.   *) Now all configuration files support Unix-style line-continuation via 
  2516.      the trailing backslash ("\") character. This enables us to write down
  2517.      complex or just very long directives in a more readable way.  The
  2518.      backslash character has to be really the last character before the
  2519.      newline and it has not been prefixed by another (escaping) backslash.
  2520.      [Ralf S. Engelschall]
  2521.  
  2522.   *) When using ProxyPass the ?querystring was not passed correctly.
  2523.      [Joel Truher <truher@wired.com>]
  2524.  
  2525.   *) To deal with modules being compiled and [dynamically] linked
  2526.      at a different time from the core, the SERVER_VERSION and
  2527.      SERVER_BUILT symbols have been abstracted through the new
  2528.      API routines apapi_get_server_version() and apapi_get_server_built().
  2529.      [Ken Coar]  PR#1448
  2530.  
  2531.   *) WIN32: Preserve trailing slash in canonical path (and hence
  2532.        in PATH_INFO). [Paul Sutton, Ben Laurie]
  2533.  
  2534.   *) PORT: USE_PTHREAD_SERIALIZED_ACCEPT has proven unreliable
  2535.      depending on the rev of Solaris and what mixture of modules
  2536.      are in use.  So it has been disabled, and Solaris is back to
  2537.      using USE_FCNTL_SERIALIZED_ACCEPT.  Users may experiment with
  2538.      USE_PTHREAD_SERIALIZED_ACCEPT at their own risk, it may speed
  2539.      up static content only servers.  Or it may fail unpredictably.
  2540.      [Dean Gaudet] PR#1779, 1854, 1904
  2541.  
  2542.   *) mod_test_util_uri.c created which tests the logic in util_uri.c.
  2543.      [Dean Gaudet]
  2544.  
  2545.   *) API: Rewrite of absoluteURI handling, and in particular how
  2546.      absoluteURIs match vhosts.  Unless a request is a proxy request, a
  2547.      "http://host" url is treated as if a similar "Host:" header had been
  2548.      supplied.  This change was made to support future HTTP/1.x protocols
  2549.      which may require clients to send absoluteURIs for all requests.
  2550.  
  2551.      In order to achieve this change subtle changes were made to the API.  In a
  2552.      request_rec, r->hostlen has been removed.  r->unparsed_uri now exists so
  2553.      that the unmodified uri can be retrieved easily.  r->proxyreq is not set
  2554.      by the core, modules must set it during the post_read_request or
  2555.      translate_names phase.
  2556.  
  2557.      Plus changes to the virtualhost test suite for absoluteURI testing.
  2558.  
  2559.      This fixes several bugs with the proxy proxying requests to vhosts
  2560.      managed by the same httpd.
  2561.      [Dean Gaudet]
  2562.  
  2563.   *) API: Cleanup of code in http_vhost.c, and remove vhost matching
  2564.      code from mod_rewrite.  The vhost matching is now performed by a
  2565.      globally available function matches_request_vhost().  [Dean Gaudet]
  2566.  
  2567.   *) Reduce memory usage, and speed up ServerAlias support.  As a
  2568.      side-effect users can list multiple ServerAlias directives
  2569.      and they're all considered.
  2570.      [Chia-liang Kao <clkao@cirx.org>] PR#1531
  2571.  
  2572.   *) The "poly" directive in image maps did not include the borders of the
  2573.      polygon, whereas the "rect" directive does.  Fix this inconsistency.
  2574.      [Konstantin Morshnev <moko@design.ru>] PR#1771
  2575.  
  2576.   *) Make \\ behave as expected.  [Ronald.Tschalaer@psi.ch]
  2577.  
  2578.   *) Add the `%a' construct to LogFormat and CustomLog to log the client IP
  2579.      address. [Todd Eigenschink <eigenstr@mixi.net>] PR#1885
  2580.  
  2581.   *) API: A new source module main/util_uri.c; It contains a routine
  2582.      parse_uri_components() and friends which breaks a URI into its component
  2583.      parts.  These parts are stored in a uri_components structure called
  2584.      parsed_uri within each request_rec, and are available to all modules.
  2585.      Additionally, an unparse routine is supplied which re-assembles the URI
  2586.      components back to an URI, optionally hiding the username:password@ part
  2587.      from ftp proxy requests, and other useful routines.  Within the structure,
  2588.      you find on a ready-for-use basis:
  2589.     scheme;     /* scheme ("http"/"ftp"/...) */
  2590.     hostinfo;   /* combined [user[:password]@]host[:port] */
  2591.     user;       /* user name, as in http://user:passwd@host:port/ */
  2592.     password;   /* password, as in http://user:passwd@host:port/ */
  2593.     hostname;   /* hostname from URI (or from Host: header) */
  2594.     port_str;   /* port string (integer representation is in "port") */
  2595.     path;       /* the request path (or "/" if only scheme://host was given) */
  2596.     query;      /* Everything after a '?' in the path, if present */
  2597.     fragment;   /* Trailing "#fragment" string, if present */
  2598.      This is meant to serve as the platform for *BIG* savings in
  2599.      code complexity for the proxy module (and maybe the vhost logic).
  2600.      [Martin Kraemer]
  2601.  
  2602.   *) Make all possible meta-construct expansions ($N, %N, %{NAME} and
  2603.      ${map:key}) available for all location where a string is created in
  2604.      mod_rewrite rewriting rulesets: 1st arg of RewriteCond, 2nd arg of
  2605.      RewriteRule and for the [E=NAME:STRING] flag of RewriteRule. This way the
  2606.      possible expansions are consequently usable at all string creation
  2607.      locations. [Ralf S. Engelschall]
  2608.  
  2609.   *) Fix initialization of RewriteLogLevel (default now is 0 as documented 
  2610.      and not 1) and the per-virtual-server merging of directives. Now all
  2611.      directives except `RewriteEngine' and `RewriteOption' are either
  2612.      completely overridden (default) or completely inherited (when
  2613.      `RewriteOptions inherit') is used. [Ralf S. Engelschall] PR#1325
  2614.  
  2615.   *) Fix `RewriteMap' program lookup in situations where such maps are
  2616.      defined but disabled (`RewriteEngine off') in per-server context. 
  2617.      [Ralf S. Engelschall] PR#1431
  2618.  
  2619.   *) Fix bug introduced in 1.3b4-dev, config with no Port setting would cause
  2620.      server to bind to port 0 rather than 80.  [Dean Gaudet]
  2621.  
  2622.   *) Fix long-standing problem with RewriteMap _programs_ under Unix derivates
  2623.      (like SunOS and FreeBSD) which don't accept the locking of pipes
  2624.      directly.  A new directive RewriteLock is introduced which can be used to
  2625.      setup a separate locking file which then is used for synchronization.
  2626.      [Ralf S. Engelschall] PR#1029
  2627.  
  2628.   *) WIN32: The server root is obtained from the registry key
  2629.      HKLM\SOFTWARE\Apache Group\Apache\<version> (version is currently
  2630.      "1.3 beta"), unless overridden by the -d command line flag. The
  2631.      value is stored by running "apache -i -d serverroot". [Paul Sutton]
  2632.  
  2633.   *) Merged os/win32/mod_dll.c into modules/standard/mod_so.c to support
  2634.      dynamic loading on Win32 and Unix via the same module. [Paul Sutton]
  2635.  
  2636.   *) Now mod_rewrite no longer makes problematic assumptions on the characters
  2637.      a username can contain when trying to expand it via /etc/passwd. 
  2638.      [Ralf S. Engelschall]
  2639.  
  2640.   *) The mod_setenvif BrowserMatch backwards compatibility command did not
  2641.      work properly with spaces in the regex.  [Ronald Tschalaer] PR#1825
  2642.  
  2643.   *) Add new RewriteMap types: First, `rnd' which is equivalent to the `txt'
  2644.      type but with a special post-processing for the looked-up value: It
  2645.      parses it into alternatives according to `|' chars and then only one
  2646.      particular alternative is chosen randomly (this is an essential
  2647.      functionality needed for balancing between backend-servers when using
  2648.      Apache as a Reverse Proxy.  The looked up value here is a list of
  2649.      servers). Second, `int' with the built-in maps named `tolower' and
  2650.      `toupper' which can be used to map URL parts to a fixed case (this is an
  2651.      essential feature to fix the case of server names when doing mass
  2652.      virtual-hosting with the help of mod_rewrite instead of using
  2653.      <VirtualHost> sections). [Ralf S. Engelschall, parts based on code from
  2654.      Jay Soffian <jay@cimedia.com>] PR#1631
  2655.  
  2656.   *) Add a new directive to mod_proxy similar to ProxyPass: `ProxyPassReverse'.
  2657.      This directive lets Apache adjust the URL in Location-headers on HTTP
  2658.      redirect responses sent by the remote server. This way the virtually
  2659.      mapped area is no longer left on redirects and thus by-passed which is
  2660.      especially essential when running Apache as a reverse proxy.  
  2661.      [Ralf S. Engelschall]
  2662.  
  2663.   *) Hide Proxy-Authorization from CGI/SSI/etc just like Authorization is
  2664.      hidden. [Alvaro Martinez Echevarria]
  2665.  
  2666.   *) Apache will, when started with the -X (single process) debugging flag,
  2667.      honor the SIGINT or SIGQUIT signals again now. This capability got lost
  2668.      a while ago during OS/2 signal handling changes.
  2669.  
  2670.   *) [PORT] Work around the fact that NeXT runs on more than the
  2671.      m68k chips in mod_status [Scott Anguish and Timothy Luoma
  2672.      <luomat@peak.org>]
  2673.  
  2674.   *) [PORT] Recognize FreeBSD versions so we can use the OS regex as well
  2675.      as handling unsigned-chars for FreeBSD v3 and v2 [Andrey Chernov
  2676.      <ache@nagual.pp.ru> and Jim] PR#1450
  2677.  
  2678.   *) Use SA_RESETHAND or SA_ONESHOT when installing the coredump handlers.
  2679.      In particular the handlers could trigger themselves into an infinite
  2680.      loop if RLimitMem was used with a small amount of memory -- too small
  2681.      for the signal stack frame to be set up.  [Dean Gaudet]
  2682.  
  2683.   *) Fix problems with absoluteURIs introduced during 1.3b4.  [Dean Gaudet,
  2684.      Alvaro Martinez Echevarria <alvaro@lander.es>]
  2685.  
  2686.   *) Fix multiple UserDir problem introduced during 1.3b4-dev.
  2687.      [Dean Gaudet] PR#1850
  2688.  
  2689.   *) ap_cpystrn() had an off-by-1 error.
  2690.      [Charles Fu <ccwf@klab.caltech.edu>] PR#1847
  2691.  
  2692.   *) API: As Ken suggested the check_cmd_context() function and related
  2693.      defines are non-static now so modules can use 'em.  [Martin Kraemer]
  2694.  
  2695.   *) mod_info would occasionally produce an unpaired <tt> in its
  2696.      output. Fixed. [Martin Kraemer]
  2697.  
  2698.   *) By default AIX binds a process (and it's children) to a single
  2699.      processor.  httpd children now unbind themselves from that cpu
  2700.      and re-bind to one selected at random via bindprocessor()
  2701.      [Doug MacEachern]
  2702.  
  2703.   *) Linux 2.0 and above implement RLIMIT_AS, RLIMIT_DATA has almost no
  2704.      effect.  Work around it by using RLIMIT_AS for the RLimitMEM
  2705.      directive.  [Enrik Berkhan <enrik@inka.de>] PR#1816
  2706.  
  2707.   *) mod_mime_magic error message should indicate the filename when
  2708.      reads fail.  ["M.D.Parker" <mdpc@netcom.com>] PR#1827
  2709.  
  2710.   *) Previously Apache would permit </Files> to end <FilesMatch> (and
  2711.      similary for Location and Directory), now this is diagnosed as an
  2712.      error.  Improve error messages for mismatched sections (<Files>,
  2713.      <FilesMatch>, <Directory>, <DirectoryMatch>, ...).
  2714.      [Dean Gaudet, Martin Kraemer]
  2715.  
  2716.   *) <Files> is not permitted within <Location> (because of the
  2717.      semantic ordering).  [Dean Gaudet] PR#379
  2718.  
  2719.   *) <Files> with wildcards was broken by the change in wildcard
  2720.      semantics (* does not match /).  To fix this, <Files> now
  2721.      apply only to the basename of the request filename.  This
  2722.      fixes some other inconsistencies in <Files> semantics
  2723.      (such as <Files a*b> not working).  [Dean Gaudet] PR#1817
  2724.  
  2725.   *) Removed bogus "dist.tar" target from Makefile.tmpl and make sure
  2726.      backup files are removed on "clean" target [Ralf S. Engelschall]
  2727.  
  2728.   *) PORT: Add -lm to LIBS for HPUX.  [Dean Gaudet] PR#1639
  2729.  
  2730.   *) Various errors from select() and accept() in child_main() would
  2731.      result in an infinite loop.  It seems these two tickle kernel
  2732.      or library bugs occasionally, and result in log spammage and
  2733.      a generally bad scene.  Now the child exits immediately,
  2734.      which seems to be a good workaround.
  2735.      [Dean Gaudet] PR#1747, 1107, 588, 1787, 987, 588
  2736.  
  2737.   *) Cleaned up some race conditions in unix child_main during
  2738.      initialization. [Dean Gaudet]
  2739.  
  2740.   *) SECURITY: "UserDir /abspath" without a * in the path would allow
  2741.      remote users to access "/~.." and bypass access restrictions
  2742.      (but note /~../.. was handled properly).
  2743.      [Lauri Jesmin <jesmin@ut.ee>] PR#1701
  2744.  
  2745.   *) API: os_is_path_absolute() now takes a const char * instead of a char *.
  2746.      [Dean Gaudet]
  2747.  
  2748. Changes with Apache 1.3b5
  2749.  
  2750.   *) Source file dependencies in Makefile.tmpl files throughout the
  2751.      source tree were updated to accurately reflect reality.
  2752.      [Dean Gaudet]
  2753.  
  2754.   *) Preserve the content encoding given by the AddEncoding directive
  2755.      when the client doesn't otherwise specify an encoding.
  2756.      [Ronald Tschalaer <Ronald.Tschalaer@psi.ch>]
  2757.  
  2758.   *) Sort out problems with canonical filename handling happening too late.
  2759.      [Dean Gaudet, Ben Laurie]
  2760.  
  2761. Changes with Apache 1.3b4
  2762.  
  2763.   *) The module structure was modified to include a *dynamic_load_handle
  2764.      in the STANDARD_MODULE_STUFF portion, and the MODULE_MAGIC_NUMBER
  2765.      has been bumped accordingly.  [Paul Sutton]
  2766.  
  2767.   *) All BrowserMatch directives mentioned in
  2768.      htdocs/manual/known_client_problems.html are in the default
  2769.      configuration files.  [Lars Eilebrecht]
  2770.  
  2771.   *) MiNT port update. [Jan Paul Schmidt]
  2772.  
  2773.   *) HTTP/1.1 requires x-gzip and gzip encodings be treated
  2774.      equivalent, similarly for x-compress and compress.  Apache
  2775.      now ignores a leading x- when comparing encodings.  It also
  2776.      preserves the encoding the client requests (for example if
  2777.      it requests x-gzip, then Apache will respond with x-gzip
  2778.      in the Content-Encoding header).
  2779.      [Ronald Tschalaer <Ronald.Tschalaer@psi.ch>] PR#1772
  2780.  
  2781.   *) Fix a memory leak on keep-alive connections.  [Igor Tatarinov]
  2782.  
  2783.   *) Added mod_so module to support dynamic loading of modules on Unix
  2784.      (like mod_dld for Win32). This replaces mod_dld.c. Use SharedModule
  2785.      instead of AddModule in Configuration to build shared modules
  2786.      [Sameer Parekh, Paul Sutton]
  2787.  
  2788.   *) Minor cleanups to r->finfo handling in some modules.
  2789.      [Dean Gaudet]
  2790.  
  2791.   *) Abstract read()/write() to ap_read()/ap_write().
  2792.      Makes it easier to add other types of IO code such as SFIO.
  2793.      [Randy Terbush]
  2794.  
  2795.   *) API: Generalize default_port manipulations to make support of
  2796.      different protocols easier. [Ben Laurie, Randy Terbush]
  2797.  
  2798.   *) There are many cases where users do not want Apache to form
  2799.      self-referential urls using the "canonical" ServerName and Port.
  2800.      The new UseCanonicalName directive (default on), if set to off
  2801.      will cause Apache to use the client-supplied hostname and port.
  2802.      API: Part of this change required a change to the construct_url()
  2803.      prototype; and the addition of get_server_name() and
  2804.      get_server_port().
  2805.      [Michael Douglass <mikedoug@texas.net>, Dean Gaudet]
  2806.      PR#315, 459, 485, 1433
  2807.  
  2808.   *) Yet another rearrangement of the source tree.. now all the common
  2809.      header files are in the src/include directory.  The -Imain -Iap
  2810.      references in Makefiles have been changed to the simpler -Iinclude
  2811.      instead.  In addition to simplifying the build a little bit, this
  2812.      also makes it clear when a module is referencing something in a
  2813.      other than kosher manner (e.g., the proxy including mod_mime.h).
  2814.      Module-private header files (the proxy, mod_mime, the regex library,
  2815.      and mod_rewrite) have not been moved to src/include; nor have
  2816.      the OS-abstraction files.  [Ken Coar]
  2817.  
  2818.   *) Fix a bug where r->hostname didn't have the :port stripped
  2819.      from it.  [Dean Gaudet]
  2820.  
  2821.   *) Tweaked the headers_out table size, and the subprocess_env
  2822.      table size guess in rename_original_environment().  Added
  2823.      MAKE_TABLE_PROFILE which can help discover make_table()
  2824.      calls that use too small an initial guess, see alloc.c.
  2825.      [Dean Gaudet]
  2826.  
  2827.   *) Options and AllowOverride weren't properly merging in the main
  2828.      server setting inside vhosts (only an issue when you have no
  2829.      <Directory> or other section containing an Options that affects
  2830.      a request).  Options +foo or -foo in the main_server wouldn't
  2831.      affect the main_server's lookup defaults.  [Dean Gaudet]
  2832.  
  2833.   *) Variable 'cwd' was being used pointlessly before being set.
  2834.      [Ken Coar] PR#1738
  2835.  
  2836.   *) r->allowed handling cleaned up in the standard modules.
  2837.      [Dean Gaudet]
  2838.  
  2839.   *) Some case-sensitivity issues cleaned up to be consistent with
  2840.      RFC2068.  [Dean Gaudet]
  2841.  
  2842.   *) SIGURG doesn't exist everywhere.
  2843.      [Mark Andrew Heinrich <heinrich@tinderbox.Stanford.EDU>]
  2844.  
  2845.   *) mod_unique_id was erroneously generating a second unique id when
  2846.      an internal redirect occured.  Such redirects occur, for example,
  2847.      when processing a DirectoryIndex match.  [Dean Gaudet]
  2848.  
  2849.   *) API: table_add, table_merge, and table_set include implicit pstrdup()
  2850.      of the key and value.  But in many cases this is not required
  2851.      because the key/value is a constant, or the value has been built
  2852.      by pstrcat() or other similar means.  New routines table_addn,
  2853.      table_mergen, and table_setn have been added to the API, these
  2854.      routines do not pstrdup() their arguments.  The core code and
  2855.      standard modules were changed to take advantage of these routines.
  2856.      The resulting server is up to 20% faster in some situations.
  2857.  
  2858.      Note that it is easy to get code subtly wrong if you pass a key/value
  2859.      which is in a pool other than the pool of the table.  The only
  2860.      safe thing to do is to pass key/values which are in the pool of
  2861.      the table, or in one of the ancestors of the pool of the table.
  2862.      i.e. if the table is part of a subrequest, a value from the main
  2863.      request's pool is OK since the subrequest pool is a sub_pool of the
  2864.      main request's pool (and therefore has a lifespan at most as long as
  2865.      the main pool).  There is debugging code which can detect improper
  2866.      usage, enabled by defining POOL_DEBUG.  See alloc.c for more details.
  2867.      [Dmitry Khrustalev <dima@bog.msu.su>, Dean Gaudet]
  2868.  
  2869.   *) More mod_mime_magic cleanup:  fewer syscalls; should handle "files"
  2870.      which don't exist on disk more gracefully; handles vhosts properly.
  2871.      Update documentation to reflect the code -- if there's no
  2872.      MimeMagicFile directive then the module is not enabled.
  2873.      [Dean Gaudet]
  2874.  
  2875.   *) PORT: Some older *nix dialects cannot automatically start scripts
  2876.      which begin with a #! interpreter line (the shell starts the scripts
  2877.      appropriately on these platforms). Apache now supports starting of
  2878.      "hashbang-scripts" when the NEED_HASHBANG_EMUL define is set.
  2879.      [Martin Kraemer, with code from peter@zeus.dialix.oz.au (Peter Wemm)
  2880.      taken from tcsh]
  2881.  
  2882.   *) API: "typedef array_header table" removed from alloc.h, folks should
  2883.      have been writing to use table as if it were an opaque type, but even
  2884.      some standard modules got this wrong.  By changing the definition
  2885.      to "typedef struct table table" module authors will receive compile
  2886.      time warnings that they're doing the wrong thing.  This change
  2887.      facilitates future changes with more sophisticated table
  2888.      structures.  Specifically, module authors should be using table_elts()
  2889.      to get access to an array_header * for the table. [Dean Gaudet]
  2890.  
  2891.   *) API: Renamed new_connection() to avoid namespace collision with LDAP
  2892.      library routines.  [Ken Coar, Rasmus Lerdorf]
  2893.  
  2894.   *) WIN32: mod_speling is now available on the Win32 platform.
  2895.      [Marc Slemko]
  2896.  
  2897.   *) For clarity the following compile time definition was changed:
  2898.  
  2899.         SAFE_UNSERIALIZED_ACCEPT  ->   SINGLE_LISTEN_UNSERIALIZED_ACCEPT
  2900.  
  2901.      Also, for example, HAVE_MMAP would mean to use mmap() scoreboards
  2902.      and not be a general notice that the OS has mmap(). Now the
  2903.      HAVE_MMAP/SHMGET #defines strictly are informational that the
  2904.      OS has that method of shared memory; the type to use for
  2905.      the scoreboard is a seperate #define (USE_MMAP_SCOREBOARD
  2906.      and USE_SHMGET_SCOREBOARD). This allows outside modules to
  2907.      determine if shared memory is available and allows Apache
  2908.      to determine the best method to use for the scoreboard.
  2909.      [Jim Jagielski]
  2910.  
  2911.   *) PORT: UnixWare 2.1.2 SMP appears to require USE_FCNTL_SERIALIZED_ACCEPT,
  2912.      as do various earlier versions.  It should be safe on all versions.
  2913.      Unixware 1.x appears to have the same SIGHUP bug as solaris does with
  2914.      the slack code.  A few other cleanups for Unixware.
  2915.      [Tom Hughes <thh@cyberscience.com>] PR#1082, PR#1282, PR#1499, PR#1553
  2916.  
  2917.   *) PORT: A/UX can handle single-listen accepts without mutex
  2918.      locking, so we add SINGLE_LISTEN_UNSERIALIZED_ACCEPT. [Jim Jagielski]
  2919.  
  2920.   *) When die() happens we need to eat any request body if one exists.
  2921.      Otherwise we can't continue with a keepalive session.  This shows up
  2922.      as a POST problem with MSIE 4.0, typically against pages which are
  2923.      authenticated.  [Roy Fielding] PR#1399
  2924.  
  2925.   *) If you define SECURITY_HOLE_PASS_AUTHORIZATION then the Authorization
  2926.      header will be passed to CGIs.  This is generally a security hole, so
  2927.      it's not a default.  [Marc Slemko] PR#549
  2928.  
  2929.   *) Fix Y2K problem with date printing in suexec log.
  2930.      [Paul Eggert <eggert@twinsun.com>] PR#1343
  2931.  
  2932.   *) WIN32 deserves a pid file.  [Ben Hyde]
  2933.  
  2934.   *) suexec errors now include the errno/description.  [Marc Slemko] PR#1543
  2935.  
  2936.   *) PORT: OSF/1 now uses USE_FLOCK_SERIALIZED_ACCEPT to solve PR#467.
  2937.      The choice of flock vs. fcntl was made based on timings which showed that
  2938.      even on non-NFS, non-exported filesystems fcntl() was an order of
  2939.      magnitude slower.  It also uses SINGLE_LISTEN_UNSERIALIZED_ACCEPT so
  2940.      that single socket users will see no difference. [Dean Gaudet] PR#467
  2941.  
  2942.   *) "File does not exist" error message was erroneously including the
  2943.      errno.  [Marc Slemko]
  2944.  
  2945.   *) Improve the warning message generated when a client drops the
  2946.      connection (hits stop button, etc.) during a send.  [Roy Fielding]
  2947.  
  2948.   *) Defining GPROF will disable profiling in the parent and enable it
  2949.      in the children.  If you're profiling under Linux this is pretty much
  2950.      necessary because SIGPROF is lost across a fork(). [Dean Gaudet]
  2951.  
  2952.   *) htdigest and htpasswd needed slight tweaks to work on OS/2 and WIN32.
  2953.      [Brian Havard]
  2954.  
  2955.   *) The NeXT cc (which is gcc hacked up) doesn't appear to support some
  2956.      gcc functionality.  Work around it.
  2957.      [Keith Severson <keith@sssd.navy.mil>] PR#1613
  2958.  
  2959.   *) Some linkers complain when .o files contain no functions.
  2960.      [Keith Severson <keith@sssd.navy.mil>] PR#1614
  2961.  
  2962.   *) Some const declarations in mod_imap.c that were added for debugging
  2963.      purposes caused some compilers heartburn without adding any
  2964.      significant value, so they've been removed.  [Ken Coar]
  2965.  
  2966.   *) The src/main/*.h header files have had #ifndef wrappers added to
  2967.      insulate them against duplicate calls if they get included through
  2968.      multiple paths (e.g., in .c files as well as other .h files).
  2969.      [Ken Coar]
  2970.  
  2971.   *) The libap routines now have a header file for their prototypes,
  2972.      src/ap/ap.h, to ease their use in non-httpd applications.  [Ken Coar]
  2973.  
  2974.   *) mod_autoindex with a plaintext header file would emit the <PRE>
  2975.      start-tag before the HTML preamble, rather than after the preamble
  2976.      but before the header file contents.  [John Van Essen <jve@gamers.org>]
  2977.      PR#1667
  2978.  
  2979.   *) SECURITY: Fix a possible buffer overflow in logresolve.  This is
  2980.      only an issue on systems without a MAXDNAME define or where
  2981.      the resolver returns domain names longer than MAXDNAME.  [Marc Slemko]
  2982.  
  2983.   *) SECURITY: Eliminate possible buffer overflow in cfg_getline, which
  2984.      is used to read various types of files such as htaccess and
  2985.      htpasswd files.  [Marc Slemko]
  2986.  
  2987.   *) SECURITY: Ensure that the buffer returned by ht_time is always
  2988.      properly null terminated.  [Marc Slemko]
  2989.  
  2990.   *) The "Connection" header could be sent back with multiple "close"
  2991.      tokens.  Not an error, but a waste.
  2992.      [Ronald.Tschalaer@psi.ch] PR#1683
  2993.  
  2994.   *) mod_rewrite's RewriteLog should behave like mod_log_config, it
  2995.      shouldn't force hostname lookups.  [Dean Gaudet] PR#1684
  2996.  
  2997.   *) "basic" auth needs a case-insensitive comparison.
  2998.      [Ronald.Tschalaer@psi.ch] PR#1666
  2999.  
  3000.   *) For maximum portability, the environment passed to CGIs should
  3001.      only contain variables whose names match the regex
  3002.      /[a-zA-Z][a-zA-Z0-9_]*/.  This is now enforced by stamping
  3003.      underscores over any character outside the regex.  This
  3004.      affects HTTP_* variables, in a way that should be backward
  3005.      compatible for all the standard headers; and affects variables
  3006.      set with SetEnv/BrowserMatch and similar directives.
  3007.      [Dean Gaudet]
  3008.  
  3009.   *) mod_speling returned incorrect HREF's when an ambigous match
  3010.      was found. Noticed by <robinton@amtrash.comlink.de> (Soeren Ziehe)
  3011.      [robinton@amtrash.comlink.de (Soeren Ziehe), Martin Kraemer]
  3012.  
  3013.   *) PORT: Apache now compiles & runs on an EBCDIC mainframe
  3014.      (the Siemens BS2000/OSD family) in the POSIX subsystem
  3015.      [Martin Kraemer]
  3016.  
  3017.   *) PORT: Fix problem killing children when terminating.  Allow ^C
  3018.      to shut down the server.  [Brian Havard]
  3019.  
  3020.   *) pstrdup() is implicit in calls to table_* functions, so there's
  3021.      no need to do it before calling.  Clean up a few cases.
  3022.      [Marc Slemko, Dean Gaudet]
  3023.  
  3024.   *) new -C and -c command line arguments
  3025.      usage:
  3026.      -C "directive" : process directive before reading config files
  3027.      -c "directive" : process directive after reading config files
  3028.      example:
  3029.      httpd -C "PerlModule Apache::httpd_conf"
  3030.      [Doug MacEachern, Martin Kraemer]
  3031.  
  3032.   *) WIN32: Fix the execution of CGIs that are scripts and called 
  3033.      with path info that does not have an '=' in.
  3034.      (eg. http://server/cgi-bin/printenv?foobar)  
  3035.      [Marc Slemko] PR#1591
  3036.  
  3037.   *) WIN32: Fix a call to os_canonical_filename so it doesn't try to 
  3038.      mess with fake filenames.  This fixes proxy caching on 
  3039.      win32. PR#1265
  3040.  
  3041.   *) SECURITY: General mod_include cleanup, including fixing several
  3042.      possible buffer overflows and a possible infinite loop.
  3043.      [Dean Gaudet, Marc Slemko]
  3044.  
  3045.   *) SECURITY: Numerous changes to mod_imap in a general cleanup
  3046.      including fixing a possible buffer overflow.  [Dean Gaudet]
  3047.  
  3048.   *) WIN32: overhaul of multithreading code. Shutdowns are now graceful
  3049.      (connections are not dropped). Code can handle graceful restarts
  3050.      (but there is as yet no way to signal this to Apache). Various
  3051.      other cleanups. [Paul Sutton]
  3052.  
  3053.   *) The aplog_error changes specific to 1.3 introduced a buffer
  3054.      overrun in the (now legacy) log_printf function.  Fixed.
  3055.      [Dean Gaudet]
  3056.  
  3057.   *) mod_digest didn't properly deal with proxy authentication.  It
  3058.      also lacked a case-insensitive comparision of the "Digest"
  3059.      token.  [Ronald Tschalaer <Ronald.Tschalaer@psi.ch>] PR#1599
  3060.  
  3061.   *) A few cleanups in mod_status for efficiency.  [Dean Gaudet]
  3062.  
  3063.   *) A few cleanups in mod_info to make it thread-safe, and remove an
  3064.      off-by-5 bug that could hammer \0 on the stack. [Dean Gaudet]
  3065.  
  3066.   *) no2slash() was O(n^2) in the length of the input.  Make it O(n).
  3067.      [Dean Gaudet]
  3068.  
  3069.   *) API: migration from strncpy() to our "enhanced" version called
  3070.      ap_cpystrn() for performance and functionality reasons.
  3071.      Located in libap.a.  [Jim Jagielski]
  3072.  
  3073.   *) table_set() and table_unset() did not deal correctly with
  3074.      multiple occurrences of the same key. [Stephen Scheck
  3075.      <sscheck@infonex.net>, Ben Laurie] PR#1604
  3076.  
  3077.   *) The AuthName must now be enclosed in quotes if it is to contain
  3078.      spaces.  [Ken Coar] PR#1195
  3079.  
  3080.   *) API: new function: ap_escape_quotes(). [Ken Coar] PR#1195
  3081.  
  3082.   *) WIN32: Work around optimiser bug that killed ISAPI in release
  3083.      versions. [Ben Laurie] PR#1533
  3084.  
  3085.   *) PORT: Update the MPE port [Mark Bixby, Jim Jagielski]
  3086.  
  3087.   *) Interim (slow) fix for p->sub_pool critical sections in
  3088.      alloc.c (affects win32 only).  [Ben Hyde]
  3089.  
  3090.   *) non-WIN32 was missing destroy_mutex definition.  [Ben Hyde]
  3091.  
  3092.   *) send_fd_length() did not calculate total_bytes_sent properly.
  3093.      [Ben Reser <breser@regnow.com>] PR#1366
  3094.  
  3095.   *) The bputc() macro was not properly integrated with the chunking
  3096.      code; in many cases modules using bputc() could cause completely
  3097.      bogus chunked output.  (Typically this will show up as problems
  3098.      with Internet Explorer 4.0 reading a page, but other browsers
  3099.      having no problem.) [Dean Gaudet]
  3100.  
  3101.   *) Create LARGE_WRITE_THRESHOLD define which determines how many
  3102.      bytes have to be supplied to bwrite() before it will consider
  3103.      doing a writev() to assemble multiple buffers in one system
  3104.      call.  This is critical for modules such as mod_include,
  3105.      mod_autoindex, mod_php3 which all use bputc()/bputs() of smaller
  3106.      strings in some cases.  The result would be extra effort
  3107.      setting up writev(), and in many cases extra effort building
  3108.      chunks.  The default is 31, it can be overriden at compile
  3109.      time. [Dean Gaudet]
  3110.  
  3111.   *) Move the gid switching code into the child so that log files
  3112.      and pid files are opened with the root gid.
  3113.      [Gregory A Lundberg <lundberg@vr.net>]
  3114.  
  3115.   *) WIN32: Check for binaries by looking for the executable header
  3116.      instead of counting control characters.
  3117.      [Jim Patterson <Jim.Patterson@Cognos.COM>] PR#1340
  3118.  
  3119.   *) ap_snprintf() moved from main/util_snprintf.c to ap/ap_snprintf.c
  3120.      so the functionality is available to applications other than the
  3121.      server itself (like the src/support tools).  [Ken Coar]
  3122.  
  3123.   *) ap_slack() moved out of main/util.c into ap/ap_slack.c as part of
  3124.      the libap consolidation work.  [Ken Coar]
  3125.  
  3126.   *) ap_snprintf() with a len of 0 behaved like sprintf().  This is not
  3127.      useful, and isn't what the standards require.  Now it returns 0
  3128.      and writes nothing.  [Dean Gaudet]
  3129.  
  3130.   *) When an error occurs in fcntl() locking suggest the user look up
  3131.      the docs for LockFile.  [Dean Gaudet]
  3132.  
  3133.   *) Eliminate some dead code from writev_it_all().
  3134.      [Igor Tatarinov <tatarino@prairie.NoDak.edu>]
  3135.  
  3136.   *) mod_autoindex had an fread() without checking the result code.
  3137.      It also wouldn't handle "AddIconByType (TXT,/icons/text.gif text/*"
  3138.      (note the missing closing paren) properly.  [Dean Gaudet]
  3139.  
  3140.   *) It appears the "257th byte" bug (see
  3141.      htdocs/manual/misc/known_client_problems.html#257th-byte) can happen
  3142.      at the 256th byte as well.  Fixed.  [Dean Gaudet]
  3143.  
  3144.   *) PORT: Fix mod_mime_magic under OS/2, no support for block devices.
  3145.      [Brian Havard]
  3146.  
  3147.   *) Fix memory corruption caused by allocating auth usernames in the
  3148.      wrong pool.  [Dean Gaudet] PR#1500
  3149.  
  3150.   *) Fix an off-by-1, and an unterminated string error in
  3151.      mod_mime_magic.  [Dean Gaudet]
  3152.  
  3153.   *) Fix a potential SEGV problem in mod_negotiation when dealing
  3154.      with type-maps.  [Dean Gaudet]
  3155.  
  3156.   *) Better glibc support under Linux.  [Dean Gaudet] PR#1542
  3157.  
  3158.   *) "RedirectMatch gone /" would cause a SIGSEGV. [Dean Gaudet] PR#1319
  3159.  
  3160.   *) WIN32: avoid overflows during file canonicalisations.
  3161.      [malcolm@mgdev.demon.co.uk] PR#1378
  3162.  
  3163.   *) WIN32: set_file_slot() didn't detect absolute paths. [Ben Laurie]
  3164.      PR#1511, 1508
  3165.  
  3166.   *) WIN32: mod_status display header didn't match fields. [Ben Laurie]
  3167.  
  3168.   *) The pthread_mutex_* functions return an error code, and don't
  3169.      set errno.  [Igor Tatarinov <tatarino@prairie.NoDak.edu>]
  3170.  
  3171.   *) WIN32: Allow spaces to prefix the interpreter in #! lines.
  3172.      [Ben Laurie] PR#1101
  3173.  
  3174.   *) WIN32: Cure file leak in CGIs. [Peter Tillemans <pti@net4all.be>] PR#1523
  3175.  
  3176.   *) proxy_ftp: the directory listings generated by the proxy ftp module
  3177.      now have a title in which the path components are clickable and allow
  3178.      quick navigation to the clicked-on directory on the currently listed
  3179.      ftp server. This also fixes a bug where the ".." directory links would
  3180.      sometimes refer to the wrong directory.  [Martin Kraemer]
  3181.  
  3182.   *) WIN32: Allocate the correct amount of memory for the scoreboard.
  3183.      [Ben Hyde] PR#1387
  3184.  
  3185.   *) WIN32: Only lowercase the part of the path that is real. [Ben Laurie]
  3186.      PR#1505
  3187.  
  3188.   *) Fix problems with timeouts in inetd mode and -X mode.  [Dean Gaudet]
  3189.  
  3190.   *) Fix the spurious "(0)unknown error: mmap_handler: mmap failed"
  3191.      error messages. [Ben Hyde]
  3192.  
  3193. Changes with Apache 1.3b3
  3194.  
  3195.   *) WIN32: Work around brain-damaged spawn calls that can't deal
  3196.      with spaces and slashes.  [Ben Laurie]
  3197.  
  3198.   *) WIN32: Fix the code so CGIs can use socket calls on Windows.  
  3199.      The problem was that certain undocumented environment variables
  3200.      needed for sockets to work under Win32 were not being passed.
  3201.      [Frank Faubert <frank@sane.com>]
  3202.  
  3203.   *) Add a "-V" command line flag to the httpd binary.  This 
  3204.      flag shows some of the defines that Apache was compiled with.
  3205.      It is useful for debugging purposes.  [Martin Kraemer]
  3206.  
  3207.   *) Start separating the ap_*() routines into their own library, so they
  3208.      can be used by items in src/support among other things.  
  3209.      [Ken Coar] PR#512, 905, 1252, 1308 
  3210.  
  3211.   *) Give a more informative error when no AuthType is set.
  3212.      [Lars Eilebrecht]
  3213.  
  3214.   *) Remove strtoul() use from mod_proxy because it isn't available
  3215.      on all platforms.   [Marc Slemko] PR#1214
  3216.  
  3217.   *) WIN32: Some Win32 systems terminated all responses after 16 kB. 
  3218.      This turns out to be a bug in Winsock - select() doesn't always 
  3219.      return the correct status.  [Ben Laurie]
  3220.  
  3221.   *) Directives owned by http_core can now use the new check_cmd_context()
  3222.      routine to ensure that they're not being used within a container
  3223.      (e.g., <Directory>) where they're invalid.  [Martin Kraemer]
  3224.  
  3225.   *) PORT: Recent changes made it necessary to add explicit prototype
  3226.      for fgetc() and fgets() on SunOS 4.x.  [Martin Kraemer, Ben Hyde]
  3227.  
  3228.   *) It was necessary to distinguish between resources which are
  3229.      allocated in the parent, for cleanup in the parent, and resources
  3230.      which are allocated in each child, for cleanup in each child.
  3231.      A new pool was created which is passed to the module child_init
  3232.      and child_exit functions; modules are free to register per-child
  3233.      cleanups there.  This fixes a bug with reliable piped logs.
  3234.      [Dean Gaudet]
  3235.  
  3236.   *) mod_autoindex wasn't displaying the ReadmeName file at the bottom
  3237.      unless it was also doing FancyIndexes, but it displayed the
  3238.      HeaderName file at the top under all circumstances.  It now shows
  3239.      the ReadmeName file for simple indices, too, as it should.  
  3240.      [Ken Coar] PR#1373
  3241.  
  3242.   *) http_core was mmap()ing even in cases where it wasn't going to
  3243.      read the file.  [Ben Hyde <bhyde@gensym.com>]
  3244.  
  3245.   *) Complete rewrite ;-) of mod_rewrite's URL rewriting engine:
  3246.      Now the rewriting engine (the heart of mod_rewrite) is organized more
  3247.      straight-forward, first time well documented and reduced to the really
  3248.      essential parts. All redundant cases were stripped off and processing now
  3249.      is the same for both per-server and per-directory context with only a
  3250.      minimum difference (the prefix stripping in per-dir context). As a
  3251.      side-effect some subtle restrictions and two recently discovered problems
  3252.      are gone: Wrong escaping of QUERY_STRING on redirects in per-directory
  3253.      context and restrictions on the substitution URL on redirects.
  3254.      Additionally some minor source cleanups were done. 
  3255.      [Ralf S. Engelschall] 
  3256.  
  3257.   *) Lars Eilebrecht wrote a whole new set of Apache Vhost Internals
  3258.      documentation, examples, explanations and caveats. They live in a new
  3259.      subdirectory htdocs/manual/vhost/. [Lars Eilebrecht <sfx@unix-ag.org>]
  3260.  
  3261.   *) If ap_slack fails to allocate above the low slack line it's a good
  3262.      indication that further problems will occur; it's a better indication
  3263.      than many external libraries give us when we actually run out of
  3264.      descriptors.  So report it to the user once per restart.
  3265.      [Dean Gaudet] PR#1181
  3266.  
  3267.   *) Change mod_include and mod_autoindex to use Y2K-safe date formats
  3268.      by default.  [Ken Coar]
  3269.  
  3270.   *) Add a "SuppressColumnSorting" option to the IndexOptions list,
  3271.      which will keep the column heading from being links for sorting
  3272.      the display.  [Ken Coar, suggested by Brian Tiemann <btman@pacific.net>]
  3273.      PR #1261
  3274.  
  3275.   *) PORT: Update the LynxOS port.  [Marius Groeger <mag@sysgo.de>]
  3276.  
  3277.   *) Fix logic error when issuing a mmap() failed message
  3278.      with a non-zero MMAP_THRESHOLD.
  3279.      [David Chambers <davidc@flosun.salk.edu>] PR#1294
  3280.  
  3281.   *) Preserve handler value on ProxyPass'ed requests by not
  3282.      calling find_types on a proxy'd request; fixes problems
  3283.      where some ProxyPass'ed URLs weren't actually passed
  3284.      to the proxy.
  3285.      [Lars Eilebrecht] PR#870
  3286.  
  3287.   *) Fix a byte ordering problem in mod_access which prevented
  3288.      the old-style syntax (i.e. "a.b.c." to match a class C)
  3289.      from working properly. [Dean Gaudet] PR#1248, 1328, 1384
  3290.  
  3291.   *) Fix problem with USE_FLOCK_SERIALIZED_ACCEPT not working
  3292.      properly. Each child needs to open the lockfile instead
  3293.      of using the passed file-descriptor from the parent. 
  3294.      [Jim Jagielski] PR#1056
  3295.  
  3296.   *) Fix the error logging in mod_cgi; the recent error log changes
  3297.      introduced a bug that prevented it from working correctly.
  3298.      [M.D.Parker] PR#1352
  3299.  
  3300.   *) Default to USE_FCNTL_SERIALIZED_ACCEPT on HPUX to properly 
  3301.      handle multiple Listen directives.  [Marc Slemko] PR#872
  3302.  
  3303.   *) Inherit a bugfix to fnmatch.c from FreeBSD sources.
  3304.      ["[KOI8-R] ß╬─╥┼╩ ■┼╥╬╧╫" <ache@nagual.pp.ru>] PR#1311
  3305.  
  3306.   *) When a configuration parse complained about a bad directive,
  3307.      the logger would use whatever (unrelated) value was in errno.
  3308.      errno is now forced to EINVAL first in this case.  [Ken Coar]
  3309.  
  3310.   *) A sed command in the Configure script pushed the edge of POSIXness,
  3311.      breaking on some systems.  [Bhaba R.Misra <system@vt.edu>] PR#1368
  3312.  
  3313.   *) Solaris >= 2.5 was totally broken due to a mess up using pthread
  3314.      mutexes.  [Roy Fielding, Dean Gaudet]
  3315.  
  3316.   *) OS/2 Port updated; it should be possible to build OS/2 from the same
  3317.      sources as Unix now.  [Brian Havard <brianh@kheldar.apana.org.au>]
  3318.  
  3319.   *) Fix a year formatting bug in mod_usertrack.
  3320.      [Paul Eggert <eggert@twinsun.com>] PR#1342
  3321.  
  3322.   *) A mild SIGTERM/SIGALRM race condition was eliminated.
  3323.      [Dean Gaudet] PR#1211
  3324.  
  3325.   *) Warn user that default path has changed if /usr/local/etc/httpd
  3326.      is found on the system.  [Lars Eilebrecht]
  3327.  
  3328.   *) Various mod_mime_magic bug fixes and cleanups: Uncompression
  3329.      should work, it should work on WIN32, and a few resource
  3330.      leaks and abort conditions are fixed.
  3331.      [Dean Gaudet] PR#1205
  3332.  
  3333.   *) PORT: On AIX 1.x files can't be named '@', fix the proxy cache
  3334.      to use '%' instead of '@' in its encodings.
  3335.      [David Schuler <schuld@btv.ibm.com>] PR#1317
  3336.  
  3337.   *) Improve the warning message generated when the "server is busy".
  3338.      [Dean Gaudet] PR#1293
  3339.  
  3340.   *) PORT: All ports which don't otherwise define DEF_WANTHSREGEX will
  3341.      get Spencer regex by default.  This is to avoid having to
  3342.      discover bugs in operating system libraries.  [Dean Gaudet]
  3343.  
  3344.   *) PORT: "Fix" PR#467 by generating warnings on systems which we have
  3345.      not been able to get working USE_*_SERIALIZED_ACCEPT settings for.
  3346.      Document this a bit more in src/PORTING.  [Dean Gaudet] PR#467
  3347.  
  3348.   *) Ensure that one copy of config warnings makes it to the
  3349.      error_log.  [Dean Gaudet]
  3350.  
  3351.   *) Invent new structure and associated methods to handle config file
  3352.      reading. Add "custom" hook to use config file cfg_getline() on
  3353.      something which is not a FILE*  [Martin Kraemer]
  3354.  
  3355.   *) Make single-exe Windows install. [Ben Laurie and Eric Esselink]
  3356.  
  3357.   *) WIN32: Make CGI work under Win95. [Ben Laurie and Paul Sutton]
  3358.  
  3359.   *) WIN32: Make index.html and friends work under Win95. [Ben Laurie]
  3360.  
  3361.   *) PORT: Solaris 2.4 needs Spencer regex, the system regex is broken.
  3362.     [John Line <jml4@cam.ac.uk>] PR#1321
  3363.  
  3364.   *) Default pathname has been changed everywhere to /usr/local/apache
  3365.      [Sameer <sameer@c2.net>]
  3366.  
  3367.   *) PORT: AIX now uses USE_FCNTL_SERIALIZED_ACCEPT.
  3368.     [David Bronder <David-Bronder@uiowa.edu>] PR#849
  3369.  
  3370.   *) PORT: i386 AIX does not have memmove.
  3371.      [David Schuler <schuld@btv.ibm.com>] PR#1267
  3372.  
  3373.   *) PORT: HPUX now defaults to using Spencer regex.
  3374.      [Philippe Vanhaesendonck <pvanhaes@be.oracle.com>,
  3375.      Omar Del Rio <al112263@academ01.lag.itesm.mx>] PR#482, 1246
  3376.  
  3377.   *) PORT: Some versions of NetBSD don't automatically define
  3378.         __NetBSD__.  Workaround by defining NETBSD.
  3379.      [Chris Craft <ccraft@cncc.cc.co.us>] PR#977
  3380.  
  3381.   *) PORT: UnixWare 2.x requires -lgen for syslog.
  3382.      [Hans Snijder <hs@meganet.nl>] PR#1249
  3383.  
  3384.   *) PORT: ULTRIX appears to not have syslog.
  3385.      [Lars Eilebrecht <Lars.Eilebrecht@unix-ag.org>]
  3386.  
  3387.   *) PORT: Basic Gemini port (treat it like unixware212).
  3388.      ["Pavel Yakovlev (Paul McHacker)" <hac@tomcat.olly.ru>]
  3389.  
  3390.   *) PORT: All SVR4 systems now use NET_SIZE_T = size_t, and
  3391.         use USE_SHMGET_SCOREBOARD.
  3392.      [Martin Kraemer]
  3393.  
  3394.   *) Various improvements in detecting config file errors (missing closing
  3395.      directives for <Directory>, <Files> etc. blocks, prohibiting global
  3396.      server settings in <VirtualHost> blocks, flagging unhandled multiple
  3397.      arguments to <Directory>, <Files> etc.)
  3398.      [Martin Kraemer]
  3399.  
  3400.   *) Add support to suexec wrapper program for mod_unique_id's UNIQUE_ID
  3401.      variable to provide this one to suexec'd CGIs, too.
  3402.      [M.D.Parker <mdpc@netcom.com>] PR#1284
  3403.  
  3404.   *) New support tool: src/support/split-logfile, a sample Perl script which
  3405.      splits up a combined access log into separate files based on the
  3406.      name of the virtual host (listed first in the log records by "%v").
  3407.      [Ken Coar]
  3408.  
  3409. Changes with Apache 1.3b2 (there is no 1.3b1)
  3410.  
  3411.   *) TestCompile was not passing $LIBS [Dean Gaudet]
  3412.  
  3413.   *) Makefile.tmpl was not using $CFLAGS in the link phase. 
  3414.      [Martin Kraemer]
  3415.  
  3416.   *) Add debugging code to alloc.c.  Defining ALLOC_DEBUG provides a
  3417.      rudimentary memory debugger which can be used on live servers with
  3418.      low impact -- it sets all allocated and freed memory bytes to 0xa5.
  3419.      Defining ALLOC_USE_MALLOC will cause the alloc code to use malloc()
  3420.      and free() for each object.  This is far more expensive and should
  3421.      only be used for testing with tools such as Electric Fence and
  3422.      Purify.  See main/alloc.c for more details.  [Dean Gaudet]
  3423.  
  3424.   *) Configure uses a sh trap and didn't set its exitcode properly.
  3425.      [Dean Gaudet] PR#1159
  3426.  
  3427.   *) Yet another vhost revamp.  Add the NameVirtualHost directive which
  3428.      explicitly lists the ip:port pairs that are to be used for name-vhosts.
  3429.      From a given ip:port, regardless what the Host: header is, you can
  3430.      only reach the vhosts defined on that ip:port.  The precedence of
  3431.      vhosts was reversed to match other precedences in the config --
  3432.      the earlier vhosts override the later vhosts.  All vhost matching was
  3433.      moved into http_vhost.[ch].  [Dean Gaudet]
  3434.  
  3435.   *) ap_inline can be used to force inlining.  GNUC __attribute__() can
  3436.      be used for whatever reason is appropriate (i.e. format() warnings
  3437.      for printf style functions).  Both are enabled only with
  3438.      gcc >= 2.7.x (so that we have fewer support issues with older
  3439.      versions).  [Dean Gaudet]
  3440.  
  3441.   *) Fix support for Proxy Authentication (we were testing the response
  3442.      status too early). [Marc Slemko]
  3443.  
  3444.   *) CoreDumpDirectory directive directs where the core file is
  3445.      written when a SIGSEGV, SIGBUS, SIGABORT or SIGABRT are
  3446.      received.  [Marc Slemko, Dean Gaudet]
  3447.  
  3448.   *) PORT: Support for Atari MINT.
  3449.      [Jan Paul Schmidt <Jan.P.Schmidt@mni.fh-giessen.de>]
  3450.  
  3451.   *) When booting, apache will now detach itself from stdin, stdout,
  3452.      and stderr.  stderr will not be detached until after the config
  3453.      files have been read so you will be able to see initial error
  3454.      messages.  After that all errors are logged in the error_log.
  3455.      This makes it more convenient to start apache via rsh, ssh,
  3456.      or crontabs.  [Dean Gaudet] PR#523
  3457.  
  3458.   *) mod_proxy was sending HTTP/1.1 responses to ftp requests by mistake.
  3459.      Also removed the auto-generated link to www.apache.org that was the
  3460.      source of so many misdirected bug reports.  [Roy Fielding, Marc Slemko]
  3461.  
  3462.   *) send_fb would not detect aborted connections in some situations.
  3463.      [Dean Gaudet]
  3464.  
  3465.   *) mod_include would use uninitialized data when parsing certain
  3466.      expressions involving && and ||. [Brian Slesinsky] PR#1139
  3467.  
  3468.   *) mod_imap should only handle GET methods.  [Jay Bloodworth]
  3469.  
  3470.   *) suexec.c wouldn't build without -DLOG_EXEC. [Jason A. Dour]
  3471.  
  3472.   *) mod_autoindex improperly counted &escapes; as more than one
  3473.      character in the description.  It also improperly truncated
  3474.      descriptions that were exactly the maximum length.
  3475.      [Martin Kraemer]
  3476.  
  3477.   *) RedirectMatch was not properly escaping the result (PR#1155).  Also
  3478.      "RedirectMatch /advertiser/(.*) $1" is now permitted.
  3479.      [Dean Gaudet]
  3480.  
  3481.   *) mod_include now uses symbolic names to check for request success
  3482.      and return HTTP errors, and correctly handles all types of
  3483.      redirections (previously it only did temporary redirect correctly).
  3484.      [Ken Coar, Roy Fielding]
  3485.  
  3486.   *) mod_userdir was modifying r->finfo in cases where it wasn't setting
  3487.      r->filename.  Since those two are meant to be in sync with each other
  3488.      this is a bug.  ["Paul B. Henson" <henson@intranet.csupomona.edu>]
  3489.  
  3490.   *) PORT: Support Unisys SVR4, whose uname returns mostly useless data.
  3491.      ["Kaufman, Steven E" <Steven.Kaufman@unisys.com>]
  3492.  
  3493.   *) Inetd mode (which is buggy) uses timeouts without having setup the
  3494.      jmpbuffer. [Dean Gaudet] PR#1064
  3495.  
  3496.   *) Work around problem under Linux where a child will start looping
  3497.      reporting a select error over and over.
  3498.      [Rick Franchuk <rickf@transpect.net>] PR#1107, 987, 588
  3499.  
  3500.   *) Fixed error in proxy_util.c when looping through multiple host IP
  3501.      addresses. [Lars Eilebrecht] PR#974
  3502.  
  3503.   *) If BUFFERED_LOGS is defined then mod_log_config will do atomic
  3504.      buffered writes -- that is, it will buffer up to PIPE_BUF (i.e. 4k)
  3505.      bytes before writing, but it will never split a log entry across a
  3506.      buffer boundary.  [Dean Gaudet]
  3507.  
  3508.   *) API: the short_score record has been split into two pieces, one which
  3509.      the parent writes on, and one which the child writes on.  As part of
  3510.      this change the get_scoreboard_info() function was removed, and
  3511.      scoreboard_image was exported.  This change fixes a race condition
  3512.      in file based scoreboard systems, and speeds up changes involving the
  3513.      scoreboard in earlier 1.3 development.  [Dean Gaudet]
  3514.  
  3515.   *) API: New register_other_child() API (see http_main.h) which allows
  3516.      modules to register children with the parent for maintenance.  It
  3517.      is disabled by defining NO_OTHER_CHILD.  [Dean Gaudet]
  3518.  
  3519.   *) API: New piped_log API (see http_log.h) which implements piped logs,
  3520.      and will use register_other_child to implement reliable piped logs
  3521.      when it is available.  The reliable piped logs part can be disabled
  3522.      by defining NO_RELIABLE_PIPED_LOGS.  At the moment reliable piped
  3523.      logs is only available on Unix. [Dean Gaudet]
  3524.  
  3525.   *) API: set_last_modified() broken into set_last_modified(), set_etag(), and
  3526.      meets_conditions().  This allows conditional HTTP selection to be
  3527.      handled separately from the storing of the header fields, and provides
  3528.      the ability for CGIs to set their own ETags for conditional checking.
  3529.      [Ken Coar, Roy Fielding]  PR#895
  3530.  
  3531.   *) Changes to mod_log_config to allow naming of format strings.
  3532.      Format nicknames are defined with "LogFormat fmt nickname", and can
  3533.      be used with "LogFormat nickname" and "CustomLog logtarget nickname".
  3534.      [Ken Coar]
  3535.  
  3536.   *) New module, "mod_speling", which can help find files even when 
  3537.      the URL is slightly misspelled. [Martin Kraemer, Alexei Kosut]
  3538.  
  3539.   *) API: New function child_terminate() triggers the child process to
  3540.      exit, while allowing the child finish what it needs to for the
  3541.      current request first.  
  3542.      [Doug MacEachern, Alexei Kosut]
  3543.  
  3544.   *) Windows now defaults to using full status reports with mod_status.
  3545.      [Alexei Kosut] PR #1094
  3546.  
  3547.   *) *Really* disable all mod_rewrite operations if the engine is off.
  3548.      Some things (like RewriteMaps) were checked/performed even if they
  3549.      weren't supposed to be.  [Ken Coar] PR #991
  3550.  
  3551.   *) Implement a new timer scheme which eliminates the need to call alarm() all
  3552.      the time.  Instead a counter in the scoreboard for each child is used to
  3553.      show when the child has made forward progress.  The parent samples this
  3554.      counter every scoreboard maintenance cycle, and issues SIGALRM if no
  3555.      progress has been made in the timeout period.  This reduces the static
  3556.      request best-case syscall count to 22 from 29.  This scheme is only
  3557.      used by systems with memory-based scoreboards.  [Dean Gaudet]
  3558.  
  3559.   *) The proxy now properly handles CONNECT requests which are sent
  3560.      to proxy servers when using ProxyRemote.  [Marc Slemko] PR#1024
  3561.  
  3562.   *) A script called apachectl has been added to the support 
  3563.      directory.  This script allows you to do things such as 
  3564.      "apachectl start" and "apachectl restart" from the command
  3565.      line.  [Marc Slemko]
  3566.  
  3567.   *) Modules and core routines are now put into libraries, which
  3568.      simplifies the link line tremendously (among other advantages).
  3569.      [Paul Sutton]
  3570.  
  3571.   *) Some of the MD5 names defined in Apache have been renamed to have
  3572.      an `ap_' prefix to avoid conflicts with routines supplied by
  3573.      external libraries.  [Ken Coar]
  3574.  
  3575.   *) Removal of mod_auth_msql.c from the distribution. There are many
  3576.      other options for databases today. Rather than offer one option,
  3577.      offer none at this time. mod_auth_msql and other SQL database
  3578.      authentication modules can be found at the Apache Module Registry.
  3579.      http://modules.apache.org/ It would be nice to offer a generic
  3580.      mod_auth_sql option in the near future.
  3581.  
  3582.   *) PORT: BeOS support added [Alexei Kosut]
  3583.  
  3584.   *) Configure no longer accepts the -make option, since it creates
  3585.      Makefile on the fly based on Makefile.tmpl and Configuration.
  3586.  
  3587.   *) Apache now gracefully shuts down when it receives a SIGTERM, instead
  3588.      of forcibly killing off all its processes and exiting without
  3589.      cleaning up. [Alexei Kosut]
  3590.  
  3591.   *) API: A new field in the request_rec, r->mtime, has been added to
  3592.      avoid gratuitous parsing of date strings.  It is intended to hold
  3593.      the last-modified date of the resource (if applicable).  An
  3594.      update_mtime() routine has also been added to advance it if
  3595.      appropriate.  [Roy Fielding, Ken Coar]
  3596.  
  3597.   *) SECURITY: If a htaccess file can not be read due to bad permissions,
  3598.      deny access to the directory with a HTTP_FORBIDDEN.  The previous
  3599.      behavior was to ignore the htaccess file if it could not be read.
  3600.      This change may make some setups with unreadable htaccess files
  3601.      stop working.  [Marc Slemko] PR#817
  3602.  
  3603.   *) Add aplog_error() providing a mechanism to define levels of
  3604.      verbosity to the server error logging. This addition also provides
  3605.      the ability to log errors using syslogd. Error logging is configurable
  3606.      on a per-server basis using the LogLevel directive. Conversion
  3607.      of log_*() in progress. [Randy Terbush]
  3608.  
  3609.   *) Further enhance aplog_error() to not log filename, line number, and
  3610.      errno information when it isn't applicable. [Ken Coar, Dean Gaudet]
  3611.  
  3612.   *) WIN32: Canonicalise filenames under Win32. Short filenames are
  3613.      converted to long ones. Backslashes are converted to forward
  3614.      slashes. Case is converted to lower. Parts of URLs that do not
  3615.      correspond to files are left completely alone. [Ben Laurie]
  3616.  
  3617.   *) PORT: 2 new OSs added to the list of ports:
  3618.       Encore's UMAX V: Arieh Markel <amarkel@encore.com>
  3619.       Acorn RISCiX: Stephen Borrill <sborrill@xemplar.co.uk>
  3620.  
  3621.   *) Add the server version (SERVER_VERSION macro) to the "server
  3622.      configured and running" entry in the error_log.  Also build an
  3623.      object file at link-time that contains the current time
  3624.      (SERVER_BUILT global const char[]), and include that in the
  3625.      message.  [Ken Coar]
  3626.  
  3627.   *) Set r->headers_out when sending responses from the proxy.
  3628.      This fixes things such as the logging of headers sent from
  3629.      the proxy.  [Marc Slemko] PR#659
  3630.  
  3631.   *) support/httpd_monitor is no longer distributed because the 
  3632.      scoreboard should not be file based if at all possible. Use
  3633.      mod_status to see current server snapshot.
  3634.  
  3635.   *) (set_file_slot): New function, allowing auth directives to be
  3636.      independent of the server root, so the server documents can be
  3637.      moved to a different directory or machine more easily.
  3638.      [David J. MacKenzie]
  3639.  
  3640.   *) If no TransferLog is given explicitly, decline
  3641.      to log.  This supports coexistence with other logging modules,
  3642.      such as the custom one that UUNET uses. [David J. MacKenzie]
  3643.  
  3644.   *) Check for titles in server-parsed HTML files.
  3645.      Ignore leading newlines and returns in titles.  The old behavior
  3646.      of replacing a newline after <title> with a space causes the
  3647.      title to be misaligned in the listing. [David J. MacKenzie]
  3648.  
  3649.   *) Change mod_cern_meta to be configurable on a per-directory basis.
  3650.      [David J. MacKenzie]
  3651.  
  3652.   *) Add 'Include' directive to allow inclusion of configuration
  3653.      files within configuration files. [Randy Terbush]
  3654.  
  3655.   *) Proxy errors on connect() are logged to the error_log (nothing
  3656.      new); now they include the IP address and port that failed
  3657.      (*that's* new).   [Ken Coar, Marc Slemko] PR#352
  3658.  
  3659.   *) Various architectures now define USE_MMAP_FILES which causes
  3660.      the server to use mmap() for static files.  There are two
  3661.      compile-time tunables MMAP_THRESHOLD (minimum number of bytes
  3662.      required to use mmap(), default is 0), and MMAP_SEGMENT_SIZE (maximum
  3663.      number of bytes written in one cycle from a single mmap()d object,
  3664.      default 32768).  [Dean Gaudet]
  3665.  
  3666.   *) API: Added post_read_request API phase which is run right after reading
  3667.      the request from a client, or right after an internal redirect.  It is
  3668.      useful for modules setting environment variables that depend only on
  3669.      the headers/contents of the request.  It does not run during subrequests
  3670.      because subrequests inherit pretty much everything from the main
  3671.      request. [Dean Gaudet]
  3672.  
  3673.   *) Added mod_unique_id which is used to generate a unique identifier for
  3674.      each hit, available in the environment variable UNIQUE_ID.
  3675.      [Dean Gaudet]
  3676.  
  3677.   *) init_modules is now called after the error logs have been opened.  This
  3678.      allows modules to emit information messages into the error logs.
  3679.      [Dean Gaudet]
  3680.  
  3681.   *) Fixed proxy-pass-through feature of mod_rewrite; Added error logging
  3682.      information for case where proxy module is not available. [Marc Slemko]
  3683.  
  3684.   *) PORT: Apache has need for mutexes to serialize its children around
  3685.      accept.  In prior versions either fcntl file locking or flock file
  3686.      locking were used.  The method is chosen by the definition of
  3687.      USE_xxx_SERIALIZED_ACCEPT in conf.h.  xxx is FCNTL for fcntl(),
  3688.      and FLOCK for flock().  New options have been added:
  3689.     - SYSVSEM to use System V style semaphores
  3690.     - PTHREAD to use POSIX threads (appears to work on Solaris only)
  3691.     - USLOCK to use IRIX uslock
  3692.      Based on timing various techniques, the following changes were made
  3693.      to the defaults:
  3694.     - Linux 2.x uses flock instead of fcntl
  3695.     - Solaris 2.x uses pthreads
  3696.     - IRIX uses SysV semaphores -- however multiprocessor IRIX boxes
  3697.         work far faster if you -DUSE_USLOCK_SERIALIZED_ACCEPT
  3698.      [Dean Gaudet, Pierre-Yves Kerembellec <Pierre-Yves.Kerembellec@vtcom.fr>,
  3699.      Martijn Koster <m.koster@pobox.com>]
  3700.  
  3701.   *) PORT: The semantics of accept/select make it very desirable to use
  3702.      mutexes to serialize accept when multiple Listens are in use.  But
  3703.      in the case where only a single socket is open it is sometimes
  3704.      redundant to serialize accept().  Not all unixes do a good job with
  3705.      potentially dozens of children blocked on accept() on the same
  3706.      socket.  It's now possible to define SINGLE_LISTEN_UNSERIALIZED_ACCEPT and
  3707.      the server will avoid serialization when listening on only one socket,
  3708.      and use serialization when listening on multiple sockets.
  3709.      [Dean Gaudet] PR#467
  3710.  
  3711.   *) Configure changes: TestLib replaced by TestCompile, which has
  3712.      some additional capability (such as doing a sanity check of
  3713.      the compiler and flags selected); the version of Solaris is now
  3714.      available via the #define value of SOLARIS2; IRIX n32bit libs
  3715.      now supported and selectable by new Configuration Rule: IRIXN32;
  3716.      We no longer default to -O2 optimization.  [Jim Jagielski]
  3717.  
  3718.   *) Updated Configure: Configuration now uses AddModule to specify
  3719.      module source or binary file location, relative to src directory.
  3720.      Modules can be dropped into modules/extra, or in their own 
  3721.      directory, and modules can come with a Makefile or Configure can 
  3722.      create one.  Modules can add compiler or library information to 
  3723.      generated Makefiles. [Paul Sutton]
  3724.  
  3725.   *) Source core re-organisation: distributed modules are now in 
  3726.      modules/standard. All other source code is in main. OS-specific
  3727.      code is in os/{unix,emx,win32} directories. [Paul Sutton]
  3728.  
  3729.   *) mod_browser has been removed, since it's replaced by mod_setenvif.
  3730.      [Ken Coar]
  3731.  
  3732.   *) Fix another long-standing bug in sub_req_lookup_file where it would
  3733.      happily skip past access checks on subdirectories looked up with
  3734.      relative paths.  (It's used by mod_dir, mod_negotiation,
  3735.      and mod_include.) [Dean Gaudet]
  3736.  
  3737.   *) directory_walk optimization to reduce an O(N*M) loop to O(N+M) where
  3738.      N is the number of <Directory> sections, and M is the number of
  3739.      components in the filename of an object.
  3740.  
  3741.      To achieve this optimization the following config changes were made:
  3742.     - Wildcards (* and ?, not the regex forms) in <Directory>s,
  3743.       <Files>s, and <Location>s now treat a slash as a special
  3744.       character.  For example "/home/*/public_html" previously would
  3745.       match "/home/a/andrew/public_html", now it only matches things
  3746.       like "/home/bob/public_html".  This mimics /bin/sh behaviour.
  3747.     - It's possible now to use [] wildcarding in <Directory>, <Files>
  3748.       or <Location>.
  3749.     - Regex <Directory>s are applied after all non-regex <Directory>s.
  3750.  
  3751.     [Dean Gaudet]
  3752.  
  3753.   *) Fix a bug introduced in 1.3a1 directory_walk regarding .htaccess files
  3754.      and corrupted paths.  [Dean Gaudet]
  3755.  
  3756.   *) Enhanced and cleaned up the URL rewriting engine of mod_rewrite:
  3757.      First the grouped parts of RewriteRule pattern matches (parenthesis!) can
  3758.      be accessed now via backreferences $1..$9 in RewriteConds test-against
  3759.      strings in addition to RewriteRules subst string. Second the grouped
  3760.      parts of RewriteCond pattern matches (parenthesis!) can be accessed now
  3761.      via backreferences %1..%9 both in following RewriteCond test-against
  3762.      strings and RewriteRules subst string. This provides maximum flexibility
  3763.      through the use of backreferences.
  3764.      Additionally the rewriting engine was cleaned up by putting common
  3765.      code to the new expand_backrefs_inbuffer() function. 
  3766.      [Ralf S. Engelschall]
  3767.  
  3768.   *) When merging the main server's <Directory> and <Location> sections into
  3769.      a vhost, put the main server's first and the vhost's second.  Otherwise
  3770.      the vhost can't override the main server.  [Dean Gaudet] PR#717
  3771.  
  3772.   *) The <Directory> code would merge and re-merge the same section after
  3773.      a match was found, possibly causing problems with some modules.
  3774.      [Dean Gaudet]
  3775.  
  3776.   *) ip-based vhosts are stored and queried using a hashing function, which
  3777.      has been shown to improve performance on servers with many ip-vhosts.
  3778.      Some other changes had to be made to accommodate this:
  3779.     - the * address for vhosts now behaves like _default_
  3780.     - the matching process now is:
  3781.         - match an ip-vhost directly via hash (possibly matches main
  3782.         server)
  3783.         - if that fails, just pretend it matched the main server
  3784.         - if so far only the main server has been matched, perform
  3785.         name-based lookups (ServerName, ServerAlias, ServerPath)
  3786.         *only on name-based vhosts*
  3787.         - if they fail, look for _default_ vhosts
  3788.      [Dean Gaudet, Dave Hankins <dhankins@sugarat.net>]
  3789.  
  3790.   *) dbmmanage overhaul:
  3791.      - merge dbmmanage and dbmmanage.new functionality, remove dbmmanage.new 
  3792.      - tie() to AnyDBM_File which will use one of DB_File, NDBM_File or
  3793.        GDBM_File (-ldb, -lndbm, -lgdbm) (trying each in that order)
  3794.      - provide better seed for rand
  3795.      - prompt for password as per getpass(3) (turn off echo, read from
  3796.        /dev/tty, etc.)
  3797.      - use "newstyle" crypt based on $Config{osname} ($^O)
  3798.      - will not add a user if already in database, use new `update' command
  3799.        instead
  3800.      - added `check' command to check a users' password
  3801.      - added `import' command to convert existing password text-files or 
  3802.        dbm files exported with `view'
  3803.      - more descriptive usage, general cleanup, 'use strict' clean, etc.
  3804.      [Doug MacEachern]
  3805.  
  3806.   *) Added psocket() which is a pool form of socket(), various places within
  3807.      the proxy weren't properly blocking alarms while registering the cleanup
  3808.      for its sockets.  bclose() now uses pclose() and pclosesocket().  There
  3809.      was a bug where the client socket was being close()d twice due a still
  3810.      registered cleanup.  [Dean Gaudet]
  3811.  
  3812.   *) A few cleanups were made to reduce time(), getpid(), and signal() calls.
  3813.      [Dean Gaudet]
  3814.  
  3815.   *) PORT: AIX >= 4.2 requires -lm due to libc changes.
  3816.      [Jason Venner <jason@idiom.com>] PR#667
  3817.  
  3818.   *) Enable ``=""'' for RewriteCond directives to match against
  3819.      the empty string. This is the preferred way instead of ``^$''.
  3820.      [Ralf S. Engelschall]
  3821.  
  3822.   *) Fixed an infinite loop in mod_imap for references above the server root
  3823.      [Dean Gaudet] PR#748
  3824.  
  3825.   *) mod_proxy now has a ReceiveBufferSize directive, similar to
  3826.      SendBufferSize, so that the TCP window can be set appropriately
  3827.      for LFNs. [Phillip A. Prindeville]
  3828.  
  3829.   *) mod_browser has been replaced by the more general mod_setenvif
  3830.      (courtesy of Paul Sutton).  BrowserMatch* directives are still
  3831.      available, but are now joined by SetEnvIf*, UnSetEnvIf*, and
  3832.      UnSetEnvIfZero directives.  [Ken Coar]
  3833.  
  3834.   *) "HostnameLookups double" forces double-reverse DNS to succeed in
  3835.      order for remote_host to be set (for logging, or for the env var
  3836.      REMOTE_HOST).  The old define MAXIMUM_DNS has been deprecated.
  3837.      [Dean Gaudet]
  3838.  
  3839.   *) mod_access overhaul:
  3840.      - Now understands network/netmask syntax (i.e.  10.1.0.0/255.255.0.0)
  3841.     and cidr syntax (i.e. 10.1.0.0/16).  PR#762
  3842.      - Critical path was sped up by pre-computing a few things at config
  3843.     time.
  3844.      - The undocumented syntax "allow user-agents" was removed,
  3845.     the replacement is "allow from env=foobar" combined with mod_browser.
  3846.      - When used with hostnames it now forces a double-reverse lookup
  3847.     no matter what the directory settings are.  This double-reverse
  3848.     doesn't affect any of the other routines that use the remote
  3849.     hostname.  In particular it's still passed to CGIs and the log
  3850.     without the double-reverse check.  Related PR#860.
  3851.      [Dean Gaudet]
  3852.  
  3853.   *) When a large bwrite() occurs (larger than the internal buffer size),
  3854.      while there is already something in the buffer, apache will combine
  3855.      the large write and the buffer into a single writev().  (This is
  3856.      in anticipation of using mmap() for reading files.)
  3857.      [Dean Gaudet]
  3858.  
  3859.   *) In obscure cases where a partial socket write occurred while chunking,
  3860.      Apache would omit the chunk header/footer on the next block.  Cleaned
  3861.      up other bugs/inconsistencies in error conditions in buff.c.  Fixed
  3862.      a bug where a long pause in DNS lookups could cause the last packet
  3863.      of a response to be unduly delayed.  [Roy Fielding, Dean Gaudet]
  3864.  
  3865.   *) API: Added child_exit function to module structure.  This is called
  3866.      once per "heavy-weight process" just before a server child exit()'s 
  3867.      e.g. when max_requests_per_child is reached, etc.
  3868.      [Doug MacEachern, Dean Gaudet]
  3869.  
  3870.   *) mod_include cleanup showed that handle_else was being used to handle
  3871.      endif.  It didn't cause problems, but it was cleaned up too.
  3872.      [Howard Fear]
  3873.  
  3874.   *) mod_cern_meta would attempt to find meta files for the directory itself
  3875.      in some cases, but not in others.  It now avoids it in all cases.
  3876.      [Dean Gaudet]
  3877.  
  3878.   *) mod_mime_magic would core dump if there was a decompression error.
  3879.      [Martin Kraemer <Martin.Kraemer@mch.sni.de>] PR#904
  3880.  
  3881.   *) PORT: some variants of DGUX require -lsocket -lnsl
  3882.      [Alexander L Jones <alex@systems-options.co.uk>] PR#732
  3883.  
  3884.   *) mod_autoindex now allows sorting of FancyIndexed directory listings
  3885.      by the various fields (name, size, et cetera), either in ascending
  3886.      or descending order.  Just click on the column header.  [Ken Coar]
  3887.  
  3888.   *) PORT: Various tweaks to eliminate pointer-int casting warnings on 64-bit
  3889.      CPUs like the Alpha.  Apache still stores ints in pointers, but that's
  3890.      the relatively safe direction.  [Dean Gaudet] PR#344
  3891.  
  3892.   *) PORT: QNX mmap() support for faster/more reliable scoreboard handling.
  3893.      [Igor N Kovalenko <infoh@mail.wplus.net>] PR#683
  3894.  
  3895.   *) child_main avoids an unneeded call to select() when there is only one
  3896.      listening socket.  [Dean Gaudet]
  3897.  
  3898.   *) In the event that the server is starved for idle servers it will
  3899.      spawn 1, then 2, then 4, ..., then 32 servers each second,
  3900.      doubling each second.  It'll also give a warning in the errorlog
  3901.      since the most common reason for this is a poor StartServers
  3902.      setting.  The define MAX_SPAWN_RATE can be used to raise/lower
  3903.      the maximum.  [Dean Gaudet]
  3904.  
  3905.   *) Apache now provides an effectively unbuffered connection for
  3906.      CGI scripts.  This means that data will be sent to the client
  3907.      as soon as the CGI pauses or stops output; previously, Apache would
  3908.      buffer the output up to a fixed buffer size before sending, which
  3909.      could result in the user viewing an empty page until the CGI finished
  3910.      or output a complete buffer.  It is no longer necessary to use an
  3911.      "nph-" CGI to get unbuffered output.  Given that most CGIs are written
  3912.      in a language that by default does buffering (e.g. perl) this
  3913.      shouldn't have a detrimental effect on performance.
  3914.  
  3915.      "nph-" CGIs, which formerly provided a direct socket to the client
  3916.      without any server post-processing, were not fully compatible with
  3917.      HTTP/1.1 or SSL support.  As such they would have had to implement
  3918.      the transport details, such as encryption or chunking, in order
  3919.      to work properly in certain situations.  Now, the only difference
  3920.      between nph and non-nph scripts is "non-parsed headers".
  3921.      [Dean Gaudet, Sameer Parekh, Roy Fielding]
  3922.  
  3923.   *) If a BUFF is switched from buffered to unbuffered reading the first
  3924.      bread() will return whatever remained in the buffer prior to the
  3925.      switch. [Dean Gaudet]
  3926.  
  3927. Changes with Apache 1.3a1
  3928.  
  3929.   *) Added another Configure helper script: TestLib. It determines
  3930.      if a specified library exists.  [Jim Jagielski]
  3931.  
  3932.   *) PORT: Allow for use of n32bit libraries under IRIX 6.x
  3933.      [derived from patch from Jeff Hayes <jhayes@aw.sgi.com>]
  3934.      PR#721
  3935.  
  3936.   *) PORT: Some architectures use size_t for various lengths in network
  3937.      functions such as accept(), and getsockname().  The definition
  3938.      NET_SIZE_T is used to control this. [Dean Gaudet]
  3939.  
  3940.   *) PORT: Linux: Attempt to detect glibc based systems and include crypt.h
  3941.      and -lcrypt.  Test for various db libraries (dbm, ndbm, db) when
  3942.      mod_auth_dbm or mod_auth_db are included.  [Dean Gaudet]
  3943.  
  3944.   *) PORT: QNX doesn't have initgroups() which support/suexec.c uses.
  3945.      [Igor N Kovalenko <infoh@mail.wplus.net>]
  3946.  
  3947.   *) "force-response-1.0" now only applies to requests which are HTTP/1.0 to
  3948.      begin with.  "nokeepalive" now works for HTTP/1.1 clients.  Added
  3949.      "downgrade-1.0" which causes Apache to pretend it received a 1.0.
  3950.      [Dean Gaudet] related PR#875
  3951.  
  3952.   *) API: Correct child_init() slot declaration from int to void, to
  3953.      match the init() declaration.  Update mod_example to use the new
  3954.      hook.  [Ken Coar]
  3955.  
  3956.   *) added transport handle slot (t_handle) to the BUFF structure
  3957.      [Doug MacEachern]
  3958.  
  3959.   *) get_client_block() returns wrong length if policy is
  3960.      REQUEST_CHUNKED_DECHUNK.
  3961.      [Kenichi Hori <ken@d2.bs1.fc.nec.co.jp>] PR#815
  3962.  
  3963.   *) Support the image map format of FrontPage.  For example:
  3964.         rect /url.hrm 10 20 30 40
  3965.      ["Chris O'Byrne" <obyrne@iol.ie>] PR#807
  3966.  
  3967.   *) PORT: -lresolv and -lsocks were in the wrong order for Solaris.
  3968.      ["Darren O'Shaughnessy" <darren@aaii.oz.au>] PR#846
  3969.  
  3970.   *) AddModuleInfo directive for mod_info which allows you to annotate
  3971.      the output of mod_info.  ["Lou D. Langholtz" <ldl@usi.utah.edu>]
  3972.  
  3973.   *) Added NoProxy directive to avoid using ProxyRemote for selected
  3974.      addresses.  Added ProxyDomain directive to cause unqualified
  3975.      names to be qualified by redirection.
  3976.      [Martin Kraemer <Martin.Kraemer@mch.sni.de>]
  3977.  
  3978.   *) Support Proxy Authentication, and don't pass the Proxy-Authorize
  3979.      header to the remote host in the proxy. [Sameer Parekh and
  3980.      Wallace]
  3981.  
  3982.   *) Upgraded mod_rewrite from 3.0.6+ to latest officially available version
  3983.      3.0.9. This upgrade includes: fixed deadlooping on rewriting to same
  3984.      URLs, fixed rewritelog(), fixed forced response code handling on
  3985.      redirects from within .htaccess files, disabled pipe locking under
  3986.      braindead SunOS 4.1.x, allow env variables to be set even on rules with
  3987.      no substitution, bugfixed situations where HostnameLookups is off, made
  3988.      mod_rewrite more thread-safe for NT port and fixed problem when creating
  3989.      an empty query string via "xxx?".
  3990.          This update also removes the copyright of Ralf S. Engelschall,
  3991.      i.e. now mod_rewrite no longer has a shared copyright. Instead is is
  3992.      exclusively copyrighted by the Apache Group now. This happened because
  3993.      the author now has gifted mod_rewrite exclusively to the Apache Group and 
  3994.      no longer maintains an external version.
  3995.      [Ralf S. Engelschall]
  3996.  
  3997.   *) API: Added child_init function to module structure.  This is called
  3998.      once per "heavy-weight process" before any requests are handled.
  3999.      See http_config.h for more details.  [Dean Gaudet]
  4000.  
  4001.   *) Anonymous_LogEmail was logging on each subrequest.
  4002.      [Dean Gaudet] PR#421, 868
  4003.  
  4004.   *) API: Added is_initial_req() which tests if the request being
  4005.      processed is the initial request, or a subrequest.
  4006.      [Doug MacEachern]
  4007.  
  4008.   *) Extended SSI (mod_include) now handles additional relops for
  4009.      string comparisons (<, >, <=, and >=).  [Bruno Wolff III] PR#41
  4010.  
  4011.   *) Configure fixed to correctly propagate user-selected options and
  4012.      settings (such as CC and OPTIM) to Makefiles other than
  4013.      src/Makefile (notably support/Makefile).  [Ken Coar] PR#666, #834
  4014.  
  4015.   *) IndexOptions SuppressHTMLPreamble now causes the actual HTML of
  4016.      directory indices to start with the contents of the HeaderName file
  4017.      if there is one.  If there isn't one, the behaviour is unchanged.
  4018.      [Ken Coar, Roy Fielding, Andrey A. Chernov]
  4019.  
  4020.   *) WIN32: Modules can now be dynamically loaded DLLs using the
  4021.      LoadModule/LoadFile directives. Note that module DLLs must be
  4022.      compiled with the multithreaded DLL version of the runtime library.
  4023.      [Alexei Kosut and Ben Laurie]
  4024.  
  4025.   *) Automatic indexing removed from mod_dir and placed into mod_autoindex.
  4026.      This allows the admin to completely remove automatic indexing
  4027.      from the server, while still supporting the basic functions of
  4028.      trailing-slash redirects and DirectoryIndex files.  Note that if
  4029.      you're carrying over an old Configuration file and you use directory
  4030.      indexing then you'll want to add:
  4031.  
  4032.      Module autoindex_module    mod_autoindex.o
  4033.  
  4034.      before mod_dir in your Configuration.  [Dean Gaudet]
  4035.  
  4036.   *) popendir/pclosedir created to properly protect directory scanning.
  4037.      [Dean Gaudet] PR#525
  4038.  
  4039.   *) AliasMatch, ScriptAliasMatch and RedirectMatch directives added,
  4040.      giving regex support to mod_alias. <DirectoryMatch>, <LocationMatch>
  4041.      and <FilesMatch> sections added to succeed <DirectoryMatch ~>, etc...
  4042.      [Alexei Kosut]
  4043.  
  4044.   *) The AccessFileName directive can now take more than one filename.
  4045.      ["Lou D. Langholtz" <ldl@usi.utah.edu>]
  4046.  
  4047.   *) The new mod_mime_magic can be used to "magically" determine the type
  4048.      of a file if the extension is unknown.  Based on the unix file(1)
  4049.      command.  [Ian Kluft <ikluft@cisco.com>]
  4050.  
  4051.   *) We now determine and display the time spent processing a
  4052.      request if desired.  [Jim Jagielski]
  4053.  
  4054.   *) mod_status: PID field of "dead" child slots no longer displays
  4055.      main httpd process's PID.  [Jim Jagielski]
  4056.  
  4057.   *) Makefile.nt added - to build all the bits from the command line:
  4058.         nmake -f Makefile.nt
  4059.          Doesn't yet work properly. [Ben Laurie]
  4060.  
  4061.   *) Default text of 404 error is now "Not Found" rather than the
  4062.      potentially misleading "File Not Found".  [Ken Coar]
  4063.  
  4064.   *) CONFIG: "HostnameLookups" now defaults to off because it is far better
  4065.      for the net if we require people that actually need this data to
  4066.      enable it.  [Linus Torvalds]
  4067.  
  4068.   *) directory_walk() is an expensive function, keep a little more state to
  4069.      avoid needless string counting.  Add two new functions make_dirstr_parent
  4070.      and make_dirstr_prefix which replace all existing uses of make_dirstr.
  4071.      The new functions are a little less general than make_dirstr, but
  4072.      work more efficiently (less memory, less string counting).
  4073.      [Dean Gaudet]
  4074.  
  4075.   *) EXTRA_LFLAGS was changed to EXTRA_LDFLAGS (and LFLAGS was changed
  4076.      to LDFLAGS) to avoid complications with lex rules in make files.
  4077.      [Dean Gaudet] PR#372
  4078.  
  4079.   *) run_method optimized to avoid needless scanning over NULLs in the
  4080.      module list.  [Dean Gaudet]
  4081.  
  4082.   *) Revamp of (unix) scoreboard management code such that it avoids
  4083.      unnecessary traversals of the scoreboard on each hit.  This is
  4084.      particularly important for high volume sites with a large
  4085.      HARD_SERVER_LIMIT.  Some of the previous operations were O(n^2),
  4086.      and are now O(n).  See also SCOREBOARD_MAINTENANCE_INTERVAL in
  4087.      httpd.h. [Dean Gaudet]
  4088.  
  4089.   *) In configurations using multiple Listen statements it was possible for
  4090.      busy sockets to starve other sockets of service.  [Dean Gaudet]
  4091.  
  4092.   *) Added hook so standalone_main can be replaced at compile time
  4093.      (define STANDALONE_MAIN)
  4094.      [Doug MacEachern]
  4095.  
  4096.   *) Lowest-level read/write functions in buff.c will be replaced with
  4097.      the SFIO library calls sfread/sfwrite if B_SFIO is defined at
  4098.      compile time.  The default sfio discipline will behave as apache
  4099.      would without sfio compiled in.
  4100.      [Doug MacEachern]
  4101.  
  4102.   *) Enhance UserDir directive (mod_userdir) to accept a list of
  4103.      usernames for the 'disable' keyword, and add 'enable user...' to
  4104.      selectively *en*able userdirs if they're globally disabled.
  4105.      [Ken Coar]
  4106.  
  4107.   *) If NETSCAPE_DBM_COMPAT is defined in EXTRA_CFLAGS then Apache
  4108.      will work with Netscape dbm files.  (dbmmanage will probably not
  4109.      work however.) [Alexander Spohr <aspohr@netmatic.com>] PR#444
  4110.  
  4111.   *) Add a ListenBacklog directive to control the backlog parameter
  4112.      passed to listen().  Also change the default to 511 from 512.
  4113.      [Marc Slemko]
  4114.  
  4115.   *) API: A new handler response DONE which informs apache that the
  4116.      request has been handled and it can finish off quickly, similar to
  4117.      how it handles errors. [Rob Hartill]
  4118.  
  4119.   *) Turn off chunked encoding after sending terminating chunk/footer
  4120.      so that we can't do it twice by accident. [Roy Fielding]
  4121.  
  4122.   *) mod_expire also issues Cache-Control: max-age headers.
  4123.      [Rob Hartill]
  4124.  
  4125.   *) API: Added kill_only_once option for free_proc_chain so that it won't
  4126.      aggressively try to kill off specific children.  For fastcgi.
  4127.      [Stanley Gambarin <gambarin@OpenMarket.com>]
  4128.  
  4129.   *) mod_auth deals with extra ':' delimited fields.  [Marc Slemko]
  4130.  
  4131.   *) Added IconHeight and IconWidth to mod_dir's IndexOptions directive.
  4132.      When used together, these cause mod_dir to emit HEIGHT and WIDTH
  4133.      attributes in the FancyIndexing IMG tags.  [Ken Coar]
  4134.  
  4135.   *) PORT: Sequent and SONY NEWS-OS support added.  [Jim Jagielski]
  4136.  
  4137.   *) PORT: Added Windows NT support
  4138.      [Ben Laurie and Ambarish Malpani <ambarish@valicert.com>]
  4139.  
  4140. Changes with Apache 1.2.6
  4141.  
  4142.   *) mod_include when using XBitHack Full would send ETags in addition to
  4143.      sending Last-Modifieds.  This is incorrect HTTP/1.1 behaviour.
  4144.      [Dean Gaudet] PR#1133
  4145.  
  4146.   *) SECURITY: When a client connects to a particular port/addr, and
  4147.      gives a Host: header ensure that the virtual host requested can
  4148.      actually be reached via that port/addr.  [Ed Korthof <ed@organic.com>]
  4149.  
  4150.   *) Support virtual hosts with wildcard port and/or multiple ports
  4151.      properly.  [Ed Korthof <ed@organic.com>]
  4152.  
  4153.   *) Fixed some case-sensitivity issues according to RFC2068.
  4154.      [Dean Gaudet]
  4155.  
  4156.   *) Set r->allowed properly in mod_asis.c, mod_dir.c, mod_info.c,
  4157.      and mod_include.c.  [Dean Gaudet]
  4158.  
  4159.   *) Variable 'cwd' was being used pointlessly before being set.
  4160.      [Ken Coar] PR#1738
  4161.  
  4162.   *) SIGURG doesn't exist on all platforms.
  4163.      [Mark Andrew Heinrich <heinrich@tinderbox.Stanford.EDU>]
  4164.  
  4165.   *) When an error occurs during a POST, or other operation with a
  4166.      request body, the body has to be read from the net before allowing
  4167.      a keepalive session to continue.  [Roy Fielding] PR#1399
  4168.  
  4169.   *) When an error occurs in fcntl() locking suggest the user look up
  4170.      the docs for LockFile.  [Dean Gaudet]
  4171.  
  4172.   *) table_set() and table_unset() did not deal correctly with
  4173.      multiple occurrences of the same key. [Stephen Scheck
  4174.      <sscheck@infonex.net>, Ben Laurie] PR#1604
  4175.  
  4176.   *) send_fd_length() did not calculate total_bytes_sent properly in error
  4177.      cases.  [Ben Reser <breser@regnow.com>] PR#1366
  4178.  
  4179.   *) r->connection->user was allocated in the wrong pool causing corruption
  4180.      in some cases when used with mod_cern_meta.  [Dean Gaudet] PR#1500
  4181.  
  4182.   *) mod_proxy was sending HTTP/1.1 responses to ftp requests by mistake.
  4183.      Also removed the auto-generated link to www.apache.org that was the
  4184.      source of so many misdirected bug reports.  [Roy Fielding, Marc Slemko]
  4185.  
  4186.   *) Multiple "close" tokens may have been set in the "Connection"
  4187.      header, not an error, but a waste.
  4188.      [Ronald.Tschalaer@psi.ch] PR#1683
  4189.  
  4190.   *) "basic" and "digest" auth tokens should be tested case-insensitive.
  4191.      [Ronald.Tschalaer@psi.ch] PR#1599, PR#1666
  4192.  
  4193.   *) It appears the "257th byte" bug (see
  4194.      htdocs/manual/misc/known_client_problems.html#257th-byte) can happen
  4195.      at the 256th byte as well.  Fixed.  [Dean Gaudet]
  4196.  
  4197.   *) mod_rewrite would not handle %3f properly in some situations.
  4198.      [Ralf Engelschall]
  4199.  
  4200.   *) Apache could generate improperly chunked HTTP/1.1 responses when
  4201.      the bputc() or rputc() functions were used by modules (such as
  4202.      mod_include).  [Dean Gaudet]
  4203.  
  4204.   *) #ifdef wrap a few #defines in httpd.h to make life easier on
  4205.      some ports.  [Ralf Engelschall]
  4206.  
  4207.   *) Fix MPE compilation error in mod_usertrack.c.  [Mark Bixby]
  4208.  
  4209.   *) Quote CC='$(CC)' to improve recurse make calls.  [Martin Kraemer]
  4210.  
  4211.   *) Avoid B_ERROR redeclaration on sysvr4 systems.  [Martin Kraemer]
  4212.  
  4213. Changes with Apache 1.2.5
  4214.  
  4215.   *) SECURITY: Fix a possible buffer overflow in logresolve.  This is
  4216.      only an issue on systems without a MAXDNAME define or where 
  4217.      the resolver returns domain names longer than MAXDNAME.  [Marc Slemko]
  4218.  
  4219.   *) Fix an improper length in an ap_snprintf call in proxy_date_canon().
  4220.      [Marc Slemko]
  4221.  
  4222.   *) Fix core dump in the ftp proxy when reading incorrectly formatted
  4223.      directory listings.  [Marc Slemko]
  4224.  
  4225.   *) SECURITY: Fix possible minor buffer overflow in the proxy cache.
  4226.      [Marc Slemko]
  4227.  
  4228.   *) SECURITY: Eliminate possible buffer overflow in cfg_getline, which
  4229.      is used to read various types of files such as htaccess and 
  4230.      htpasswd files.  [Marc Slemko]
  4231.  
  4232.   *) SECURITY: Ensure that the buffer returned by ht_time is always
  4233.      properly null terminated.  [Marc Slemko]
  4234.  
  4235.   *) SECURITY: General mod_include cleanup, including fixing several
  4236.      possible buffer overflows and a possible infinite loop.  This cleanup
  4237.      was done against 1.3 code and then backported to 1.2, the result
  4238.      is a large difference (due to indentation cleanup in 1.3 code).
  4239.      Users interested in seeing a smaller set of relevant differences
  4240.      should consider comparing against src/modules/standard/mod_include.c
  4241.      from the 1.3b3 release.  Non-indentation changes to mod_include
  4242.      between 1.2 and 1.3 were minimal.  [Dean Gaudet, Marc Slemko]
  4243.  
  4244.   *) SECURITY: Numerous changes to mod_imap in a general cleanup
  4245.      including fixing a possible buffer overflow.  This cleanup also
  4246.      was done with 1.3 code as a basis, see the the previous note
  4247.      about mod_include.  [Dean Gaudet]
  4248.  
  4249.   *) SECURITY: If a htaccess file can not be read due to bad 
  4250.      permissions, deny access to the directory with a HTTP_FORBIDDEN.  
  4251.      The previous behavior was to ignore the htaccess file if it could not
  4252.      be read.  This change may make some setups with unreadable
  4253.      htaccess files stop working.  PR#817  [Marc Slemko]
  4254.  
  4255.   *) SECURITY: no2slash() was O(n^2) in the length of the input.  
  4256.      Make it O(n).  This inefficiency could be used to mount a denial 
  4257.      of service attack against the Apache server.  Thanks to 
  4258.      Michal Zalewski <lcamtuf@boss.staszic.waw.pl> for reporting
  4259.      this.  [Dean Gaudet]
  4260.  
  4261.   *) mod_include used uninitialized data for some uses of && and ||.
  4262.      [Brian Slesinsky <bslesins@wired.com>] PR#1139
  4263.  
  4264.   *) mod_imap should decline all non-GET methods.
  4265.      [Jay Bloodworth <jay@pathways.sde.state.sc.us>]
  4266.  
  4267.   *) suexec.c wouldn't build without -DLOG_EXEC. [Jason A. Dour]
  4268.  
  4269.   *) mod_userdir was modifying r->finfo in cases where it wasn't setting
  4270.      r->filename.  Since those two are meant to be in sync with each other
  4271.      this is a bug.  ["Paul B. Henson" <henson@intranet.csupomona.edu>]
  4272.  
  4273.   *) mod_include did not properly handle all possible redirects from sub-
  4274.      requests.  [Ken Coar]
  4275.  
  4276.   *) Inetd mode (which is buggy) uses timeouts without having setup the
  4277.      jmpbuffer. [Dean Gaudet] PR#1064
  4278.  
  4279.   *) Work around problem under Linux where a child will start looping
  4280.      reporting a select error over and over.
  4281.      [Rick Franchuk <rickf@transpect.net>] PR#1107
  4282.  
  4283. Changes with Apache 1.2.4
  4284.  
  4285.   *) The ProxyRemote change in 1.2.3 introduced a bug resulting in the proxy
  4286.      always making requests with the full-URI instead of just the URI path.
  4287.      [Marc Slemko, Roy Fielding]
  4288.  
  4289.   *) Add -lm for AIX versions >= 4.2 to allow Apache to link properly
  4290.      on this platform.  [Marc Slemko]
  4291.  
  4292. Changes with Apache 1.2.3
  4293.  
  4294.   *) The request to a remote proxy was mangled if it was generated as the
  4295.      result of a ProxyPass directive. URL schemes other than http:// were not
  4296.      supported when ProxyRemote was used. PR#260, PR#656, PR#699, PR#713,
  4297.      PR#812 [Lars Eilebrecht]
  4298.  
  4299.   *) Fixed proxy-pass-through feature of mod_rewrite; Added error logging
  4300.      information for case where proxy module is not available. [Marc Slemko]
  4301.  
  4302.   *) Force proxy to always respond as HTTP/1.0, which it was failing to
  4303.      do for errors and cached responses.  [Roy Fielding]
  4304.  
  4305.   *) PORT: Improved support for ConvexOS 11.  [Jeff Venters]
  4306.  
  4307. Changes with Apache 1.2.2 [not released]
  4308.  
  4309.   *) Fixed another long-standing bug in sub_req_lookup_file where it would
  4310.      happily skip past access checks on subdirectories looked up with relative
  4311.      paths.  (It's used by mod_dir, mod_negotiation, and mod_include.)
  4312.      [Dean Gaudet]
  4313.  
  4314.   *) Add lockfile name to error message printed out when
  4315.      USE_FLOCK_SERIALIZED_ACCEPT is defined.
  4316.      [Marc Slemko]
  4317.  
  4318.   *) Enhanced the chunking and error handling inside the buffer functions.
  4319.      [Dean Gaudet, Roy Fielding]
  4320.  
  4321.   *) When merging the main server's <Directory> and <Location> sections into
  4322.      a vhost, put the main server's first and the vhost's second.  Otherwise
  4323.      the vhost can't override the main server.  [Dean Gaudet] PR#717
  4324.  
  4325.   *) The <Directory> code would merge and re-merge the same section after
  4326.      a match was found, possibly causing problems with some modules.
  4327.      [Dean Gaudet]
  4328.  
  4329.   *) Fixed an infinite loop in mod_imap for references above the server root.
  4330.      [Dean Gaudet] PR#748
  4331.  
  4332.   *) mod_include cleanup showed that handle_else was being used to handle
  4333.      endif.  It didn't cause problems, but it was cleaned up too.
  4334.      [Howard Fear]
  4335.  
  4336.   *) Last official synchronization of mod_rewrite with author version (because
  4337.      mod_rewrite is now directly developed by the author at the Apache Group):
  4338.      o added diff between mod_rewrite 3.0.6+ and 3.0.9
  4339.        minus WIN32/NT stuff, but plus copyright removement.
  4340.        In detail:
  4341.        - workaround for detecting infinite rewriting loops
  4342.        - fixed setting of env vars when "-" is used as subst string
  4343.        - fixed forced response code on redirects (PR#777)
  4344.        - fixed cases where r->args is ""
  4345.        - kludge to disable locking on pipes under braindead SunOS
  4346.        - fix for rewritelog in cases where remote hostname is unknown
  4347.        - fixed totally damaged request_rec walk-back loop
  4348.      o remove static from local data and add static to global ones.
  4349.      o replaced ugly proxy finding stuff by simple
  4350.        find_linked_module("mod_proxy") call.
  4351.      o added missing negation char on rewritelog()
  4352.      o fixed a few comment typos
  4353.      [Ralf S. Engelschall]
  4354.  
  4355.   *) Anonymous_LogEmail was logging on each subrequest.
  4356.      [Dean Gaudet] PR#421, PR#868
  4357.  
  4358.   *) "force-response-1.0" now only applies to requests which are HTTP/1.0 to
  4359.      begin with.  "nokeepalive" now works for HTTP/1.1 clients.  Added
  4360.      "downgrade-1.0" which causes Apache to pretend it received a 1.0.
  4361.      Additionally mod_browser now triggers during translate_name to workaround
  4362.      a deficiency in the header_parse phase.
  4363.      [Dean Gaudet] PR#875
  4364.  
  4365.   *) get_client_block() returns wrong length if policy is 
  4366.      REQUEST_CHUNKED_DECHUNK.
  4367.      [Kenichi Hori <ken@d2.bs1.fc.nec.co.jp>] PR#815
  4368.  
  4369.   *) Properly treat <files> container like other containers in mod_info.
  4370.      [Marc Slemko] PR#848
  4371.  
  4372.   *) The proxy didn't treat the "Host:" keyword of the host header as case-
  4373.      insensitive.  The proxy would corrupt the first line of a response from
  4374.      an HTTP/0.9 server.  [Kenichi Hori <ken@d2.bs1.fc.nec.co.jp>] PR#813,814
  4375.  
  4376.   *) mod_include would log some bogus values occasionally.
  4377.      [Skip Montanaro <skip@calendar.com>, Marc Slemko] PR#797
  4378.  
  4379.   *) PORT: The slack fd changes in 1.2.1 introduced a problem with SIGHUP
  4380.      under Solaris 2.x (up through 2.5.1).  It has been fixed.
  4381.      [Dean Gaudet] PR#832
  4382.  
  4383.   *) API: In HTTP/1.1, whether or not a request message contains a body
  4384.      is independent of the request method and based solely on the presence
  4385.      of a Content-Length or Transfer-Encoding.  Therefore, our default
  4386.      handlers need to be prepared to read a body even if they don't know
  4387.      what to do with it; otherwise, the body would be mistaken for the
  4388.      next request on a persistent connection.  discard_request_body()
  4389.      has been added to take care of that.  [Roy Fielding] PR#378
  4390.  
  4391.   *) API: Symbol APACHE_RELEASE provides a numeric form of the Apache
  4392.      release version number, such that it always increases along the
  4393.      same lines as our source code branching.  [Roy Fielding]
  4394.  
  4395.   *) Minor oversight on multiple variants fixed.  [Paul Sutton] PR#94
  4396.  
  4397. Changes with Apache 1.2.1
  4398.  
  4399.   *) SECURITY: Don't serve file system objects unless they are plain files,
  4400.      symlinks, or directories.  This prevents local users from using pipes
  4401.      or named sockets to invoke programs for an extremely crude form of
  4402.      CGI.  [Dean Gaudet]
  4403.  
  4404.   *) SECURITY: HeaderName and ReadmeName were settable in .htaccess and
  4405.      could contain "../" allowing a local user to "publish" any file on
  4406.      the system.  No slashes are allowed now.  [Dean Gaudet]
  4407.  
  4408.   *) SECURITY: It was possible to violate the symlink Options using mod_dir
  4409.      (headers, readmes, titles), mod_negotiation (type maps), or
  4410.      mod_cern_meta (meta files).  [Dean Gaudet]
  4411.  
  4412.   *) SECURITY: Apache will refuse to run as "User root" unless
  4413.      BIG_SECURITY_HOLE is defined at compile time.  [Dean Gaudet]
  4414.  
  4415.   *) CONFIG: If a symlink pointed to a directory then it would be disallowed
  4416.      if it contained a .htaccess disallowing symlinks.  This is contrary
  4417.      to the rule that symlink permissions are tested with the symlink
  4418.      options of the parent directory.  [Dean Gaudet] PR#353
  4419.  
  4420.   *) CONFIG: The LockFile directive can be used to place the serializing
  4421.      lockfile in any location.  It previously defaulted to /usr/tmp/htlock.
  4422.      [Somehow it took four of us: Randy Terbush, Jim Jagielski, Dean Gaudet,
  4423.      Marc Slemko]
  4424.  
  4425.   *) Request processing now retains state of whether or not the request
  4426.      body has been read, so that internal redirects and subrequests will
  4427.      not try to read it twice (and block). [Roy Fielding]
  4428.  
  4429.   *) Add a placeholder in modules/Makefile to avoid errors with certain
  4430.      makes. [Marc Slemko]
  4431.  
  4432.   *) QUERY_STRING was unescaped in mod_include, it shouldn't be.
  4433.      [Dean Gaudet] PR#644
  4434.  
  4435.   *) mod_include was not properly changing the current directory.
  4436.      [Marc Slemko] PR#742
  4437.  
  4438.   *) Attempt to work around problems with third party libraries that do not
  4439.      handle high numbered descriptors (examples include bind, and
  4440.      solaris libc).  On all systems apache attempts to keep all permanent
  4441.      descriptors above 15 (called the low slack line).  Solaris users
  4442.      can also benefit from adding -DHIGH_SLACK_LINE=256 to EXTRA_CFLAGS
  4443.      which keeps all non-FILE * descriptors above 255.  On all systems
  4444.      this should make supporting large numbers of vhosts with many open
  4445.      log files more feasible.  If this causes trouble please report it,
  4446.      you can disable this workaround by adding -DNO_SLACK to EXTRA_CFLAGS.
  4447.      [Dean Gaudet] various PRs
  4448.  
  4449.   *) Related to the last entry, network sockets are now opened before
  4450.      log files are opened.  The only known case where this can cause
  4451.      problems is under Solaris with many virtualhosts and many Listen
  4452.      directives.  But using -DHIGH_SLACK_LINE=256 described above will
  4453.      work around this problem.  [Dean Gaudet]
  4454.  
  4455.   *) USE_FLOCK_SERIALIZED_ACCEPT is now default for FreeBSD, A/UX, and
  4456.      SunOS 4.
  4457.  
  4458.   *) Improved unix error response logging.  [Marc Slemko]
  4459.  
  4460.   *) Update mod_rewrite from 3.0.5 to 3.0.6.  New ruleflag
  4461.      QSA=query_string_append.  Also fixed a nasty bug in per-dir context:
  4462.      when a URL http://... was used in conjunction with a special
  4463.      redirect flag, e.g. R=permanent, the permanent status was lost.
  4464.      [Ronald Tschalaer <Ronald.Tschalaer@psi.ch>, Ralf S. Engelschall]
  4465.  
  4466.   *) If an object has multiple variants that are otherwise equal Apache
  4467.      would prefer the last listed variant rather than the first.
  4468.      [Paul Sutton] PR#94
  4469.  
  4470.   *) "make clean" at the top level now removes *.o.  [Dean Gaudet] PR#752
  4471.  
  4472.   *) mod_status dumps core in inetd mode.  [Marc Slemko and Roy Fielding]
  4473.      PR#566
  4474.  
  4475.   *) pregsub had an off-by-1 in its error checking code. [Alexei Kosut]
  4476.  
  4477.   *) PORT: fix rlim_t problems with AIX 4.2. [Marc Slemko] PR#333
  4478.  
  4479.   *) PORT: Update UnixWare support for 2.1.2.
  4480.      [Lawrence Rosenman <ler@lerctr.org>] PR#511
  4481.  
  4482.   *) PORT: NonStop-UX [Joachim Schmitz <schmitz_joachim@tandem.com>] PR#327
  4483.  
  4484.   *) PORT: Update ConvexOS support for 11.5.
  4485.      [David DeSimone <fox@convex.com>] PR#399
  4486.  
  4487.   *) PORT: Support for DEC cc compiler under ULTRIX.
  4488.      ["P. Alejandro Lopez-Valencia" <alejolo@ideam.gov.co>] PR#388
  4489.  
  4490.   *) PORT: Support for Maxion/OS SVR4.2 Real Time Unix. [no name given] PR#383
  4491.  
  4492.   *) PORT: Workaround for AIX 3.x compiler bug in http_bprintf.c.  
  4493.      [Marc Slemko] PR#725
  4494.  
  4495.   *) PORT: fix problem compiling http_bprintf.c with gcc under SCO
  4496.      [Marc Slemko] PR#695
  4497.  
  4498. Changes with Apache 1.2
  4499.  
  4500. Changes with Apache 1.2b11
  4501.  
  4502.   *) Fixed open timestamp fd in proxy_cache.c [Chuck Murcko]
  4503.  
  4504.   *) Added undocumented perl SSI mechanism for -DUSE_PERL_SSI and mod_perl.
  4505.      [Doug MacEachern, Rob Hartill]
  4506.  
  4507.   *) Proxy needs to use hard_timeout instead of soft_timeout when it is
  4508.      reading from one buffer and writing to another, at least until it has
  4509.      a custom timeout handler.  [Roy Fielding and Petr Lampa]
  4510.  
  4511.   *) Fixed problem on IRIX with servers hanging in IdentityCheck,
  4512.      apparently due to a mismatch between sigaction and setjmp.
  4513.      [Roy Fielding] PR#502
  4514.  
  4515.   *) Log correct status code if we timeout before receiving a request (408)
  4516.      or if we received a request-line that was too long to process (414).
  4517.      [Ed Korthof and Roy Fielding] PR#601
  4518.  
  4519.   *) Virtual hosts with the same ServerName, but on different ports, were
  4520.      not being selected properly.  [Ed Korthof]
  4521.  
  4522.   *) Added code to return the requested IP address from proxy_host2addr()
  4523.      if gethostbyaddr() fails due to reverse DNS lookup problems. Original
  4524.      change submitted by Jozsef Hollosi <hollosi@sbcm.com>.
  4525.      [Chuck Murcko] PR#614
  4526.  
  4527.   *) If multiple requests on a single connection are used to retrieve
  4528.      data from different virtual hosts, the virtual host list would be
  4529.      scanned starting with the most recently used VH instead of the first,
  4530.      causing most virtual hosts to be ignored.
  4531.      [Paul Sutton and Martin Mares] PR#610
  4532.  
  4533.   *) The OS/2 handling of process group was broken by a porting patch for
  4534.      MPE, so restored prior code for OS/2.  [Roy Fielding and Garey Smiley]
  4535.  
  4536.   *) Inherit virtual server port from main server if none (or "*") is
  4537.      given for VirtualHost.  [Dean Gaudet] PR#576
  4538.  
  4539.   *) If the lookup for a DirectoryIndex name with content negotiation
  4540.      has found matching variants, but none are acceptable, return the
  4541.      negotiation result if there are no more DirectoryIndex names to lookup.
  4542.      [Petr Lampa and Roy Fielding]
  4543.  
  4544.   *) If a soft_timeout occurs after keepalive is set, then the main child
  4545.      loop would try to read another request even though the connection
  4546.      has been aborted.  [Roy Fielding]
  4547.  
  4548.   *) Configure changes: Allow for whitespace at the start of a
  4549.      Module declaration. Also, be more understanding about the
  4550.      CC=/OPTIM= format in Configuration. Finally, fix compiler
  4551.      flags if using HP-UX's cc compiler. [Jim Jagielski]
  4552.  
  4553.   *) Subrequests and internal redirects now inherit the_request from the
  4554.      original request-line. [Roy Fielding]
  4555.  
  4556.   *) Test for error conditions before creating output header fields, since
  4557.      we don't want the error message to include those fields.  Likewise,
  4558.      reset the content_language(s) and content_encoding of the response
  4559.      before generating or redirecting to an error message, since the new
  4560.      message will have its own Content-* definitions. [Dean Gaudet]
  4561.  
  4562.   *) Restored the semantics of headers_out (headers sent only with 200..299
  4563.      and 304 responses) and err_headers_out (headers sent with all responses).
  4564.      Avoid the overhead of copying tables if err_headers_out is empty
  4565.      (the usual case).  [Roy Fielding]
  4566.  
  4567.   *) Fixed a couple places where a check for the default Content-Type was
  4568.      not properly checking both the value configured by the DefaultType
  4569.      directive and the DEFAULT_TYPE symbol in httpd.h.  Changed the value
  4570.      of DEFAULT_TYPE to match the documented default (text/plain).
  4571.      [Dean Gaudet] PR#506
  4572.  
  4573.   *) Escape the HTML-sensitive characters in the Request-URI that is
  4574.      output for each child by mod_status. [Dean Gaudet and Ken Coar] PR#501
  4575.  
  4576.   *) Properly initialize the flock structures used by the mutex locking
  4577.      around accept() when USE_FCNTL_SERIALIZED_ACCEPT is defined.
  4578.      [Marc Slemko]
  4579.  
  4580.   *) The method for determining PATH_INFO has been restored to the pre-1.2b
  4581.      (and NCSA httpd) definition wherein it was the extra path info beyond
  4582.      the CGI script filename.  The environment variable FILEPATH_INFO has
  4583.      been removed, and instead we supply the original REQUEST_URI to any
  4584.      script that wants to be Apache-specific and needs the real URI path.
  4585.      This solves a problem with existing scripts that use extra path info
  4586.      in the ScriptAlias directive to pass options to the CGI script.
  4587.      [Roy Fielding]
  4588.  
  4589.   *) The _default_ change in 1.2b10 will change the behaviour on configs
  4590.      that use multiple Listen statements for listening on multiple ports.
  4591.      But that change is necessary to make _default_ consistent with other
  4592.      forms of <VirtualHost>.  It requires such configs to be modified
  4593.      to use <VirtualHost _default_:*>.  The documentation has been
  4594.      updated.  [Dean Gaudet] PR#530
  4595.  
  4596.   *) If an ErrorDocument CGI script is used to respond to an error
  4597.      generated by another CGI script which has already read the message
  4598.      body of the request, the server would block trying to read the
  4599.      message body again.  [Rob Hartill]
  4600.  
  4601.   *) signal() replacement conflicted with a define on QNX (and potentially
  4602.      other platforms). Fixed. [Ben Laurie] PR#512
  4603.  
  4604. Changes with Apache 1.2b10
  4605.  
  4606.   *) Allow HTTPD_ROOT, SERVER_CONFIG_FILE, DEFAULT_PATH, and SHELL_PATH
  4607.      to be configured via -D in Configuration.  [Dean Gaudet] PR#449
  4608.  
  4609.   *) <VirtualHost _default_:portnum> didn't work properly.  [Dean Gaudet]
  4610.  
  4611.   *) Added prototype for mktemp() for SUNOS4 [Marc Slemko]
  4612.  
  4613.   *) In mod_proxy.c, check return values for proxy_host2addr() when reading
  4614.      config, in case the hostent struct returned is trash.
  4615.      [Chuck Murcko] PR #491
  4616.  
  4617.   *) Fixed the fix in 1.2b9 for parsing URL query info into args for CGI
  4618.      scripts.  [Dean Gaudet, Roy Fielding, Marc Slemko]
  4619.  
  4620. Changes with Apache 1.2b9  [never announced]
  4621.  
  4622.   *) Reset the MODULE_MAGIC_NUMBER to account for the unsigned port
  4623.      changes and in anticipation of 1.2 final release.  [Roy Fielding]
  4624.  
  4625.   *) Fix problem with scripts not receiving a SIGPIPE when client drops
  4626.      the connection (e.g., when user presses Stop).  Apache will now stop
  4627.      trying to send a message body immediately after an error from write.
  4628.      [Roy Fielding and Nathan Kurz] PR#335
  4629.  
  4630.   *) Rearrange Configuration.tmpl so that mod_rewrite has higher priority
  4631.      than mod_alias, and mod_alias has higher priority than mod_proxy;
  4632.      rearranged other modules to enhance understanding of their purpose
  4633.      and relative order (and maybe even reduce some overhead).
  4634.      [Roy Fielding and Sameer Parekh]
  4635.  
  4636.   *) Fix graceful restart.  Eliminate many signal-related race
  4637.      conditions in both forms of restart, and in SIGTERM.  See
  4638.      htdocs/manual/stopping.html for details on stopping and
  4639.      restarting the parent.  [Dean Gaudet]
  4640.  
  4641.   *) Fix memory leaks in mod_rewrite, mod_browser, mod_include.  Tune
  4642.      memory allocator to avoid a behaviour that required extra blocks to
  4643.      be allocated.  [Dean Gaudet]
  4644.  
  4645.   *) Allow suexec to access files relative to current directory but not
  4646.      above.  (Excluding leading / or any .. directory.)  [Ken Coar]
  4647.      PR#269, 319, 395
  4648.  
  4649.   *) Fix suexec segfault when group doesn't exist. [Gregory Neil Shapiro]
  4650.      PR#367, 368, 354, 453
  4651.  
  4652.   *) Fix the above fix: if suexec is enabled, avoid destroying r->url
  4653.      while obtaining the /~user and save the username in a separate data
  4654.      area so that it won't be overwritten by the call to getgrgid(), and
  4655.      fix some misuse of the pool string allocation functions.  Also fixes
  4656.      a general problem with parsing URL query info into args for CGI scripts.
  4657.      [Roy Fielding] PR#339, 367, 354, 453
  4658.  
  4659.   *) Fix IRIX warning about bzero undefined. [Marc Slemko]
  4660.  
  4661.   *) Fix problem with <Directory proxy:...>. [Martin Kraemer] PR#271
  4662.  
  4663.   *) Corrected spelling of "authoritative".  AuthDBAuthoratative became
  4664.      AuthDBAuthoritative. [Marc Slemko] PR#420
  4665.  
  4666.   *) MaxClients should be at least 1. [Lars Eilebrecht] PR#375
  4667.  
  4668.   *) The default handler now logs invalid methods or URIs (i.e. PUT on an
  4669.      object that can't be PUT, or FOOBAR for some method FOOBAR that
  4670.      apache doesn't know about at all).  Log 404s that occur in mod_include.
  4671.      [Paul Sutton, John Van Essen]
  4672.  
  4673.   *) If a soft timeout (or lingerout) occurs while trying to flush a
  4674.      buffer or write inside buff.c or fread'ing from a CGI's output,
  4675.      then the timeout would be ignored. [Roy Fielding] PR#373
  4676.  
  4677.   *) Work around a bug in Netscape Navigator versions 2.x, 3.x and 4.0b2's
  4678.      parsing of headers.  If the terminating empty-line CRLF occurs starting
  4679.      at the 256th or 257th byte of output, then Navigator will think a normal
  4680.      image is invalid.  We are guessing that this is because their initial
  4681.      read of a new request uses a 256 byte buffer. We check the bytes written
  4682.      so far and, if we are about to tickle the bug, we instead insert a
  4683.      padding header of eminent bogosity. [Roy Fielding and Dean Gaudet] PR#232
  4684.  
  4685.   *) Fixed SIGSEGV problem when a DirectoryIndex file is also the source
  4686.      of an external redirection.  [Roy Fielding and Paul Sutton]
  4687.  
  4688.   *) Configure would create a broken Makefile if the configuration file
  4689.      contained a commented-out Rule.  [Roy Fielding]
  4690.  
  4691.   *) Promote per_dir_config and subprocess_env from the subrequest to the
  4692.      main request in mod_negotiation.  In particular this fixes a bug
  4693.      where <Files> sections wouldn't properly apply to negotiated content.
  4694.      [Dean Gaudet]
  4695.  
  4696.   *) Fix a potential deadlock in mod_cgi script_err handling.
  4697.      [Ralf S. Engelschall]
  4698.  
  4699.   *) rotatelogs zero-pads the logfile names to improve alphabetic sorting.
  4700.      [Mitchell Blank Jr]
  4701.  
  4702.   *) Updated mod_rewrite to 3.0.4: Fixes HTTP redirects from within
  4703.      .htaccess files because the RewriteBase was not replaced correctly.
  4704.      Updated mod_rewrite to 3.0.5: Fixes problem with rewriting inside
  4705.      <Directory> sections missing a trailing /.  [Ralf S. Engelschall]
  4706.  
  4707.   *) Clean up Linux settings in conf.h by detecting 2.x versus 1.x.  For
  4708.      1.x the settings are those of pre-1.2b8.  For 2.x we include
  4709.      USE_SHMGET_SCOREBOARD (scoreboard in shared memory rather than file) and
  4710.      HAVE_SYS_RESOURCE_H (enable the RLimit commands).
  4711.      [Dean Gaudet] PR#336, PR#340
  4712.  
  4713.   *) Redirect did not preserve ?query_strings when present in the client's
  4714.      request.  [Dean Gaudet]
  4715.  
  4716.   *) Configure was finding non-modules on EXTRA_LIBS. [Frank Cringle] PR#380
  4717.  
  4718.   *) Use /bin/sh5 on ULTRIX.  [P. Alejandro Lopez-Valencia] PR#369
  4719.  
  4720.   *) Add UnixWare compile/install instructions.  [Chuck Murcko]
  4721.  
  4722.   *) Add mod_example (illustration of API techniques).  [Ken Coar]
  4723.  
  4724.   *) Add macro for memmove to conf.h for SUNOS4. [Marc Slemko]
  4725.  
  4726.   *) Improve handling of directories when filenames have spaces in them.
  4727.      [Chuck Murcko]
  4728.  
  4729.   *) For hosts with multiple IP addresses, try all additional addresses if
  4730.      necessary to get a connect. Fail only if hostent address list is
  4731.      exhausted. [Chuck Murcko]
  4732.  
  4733.   *) More signed/unsigned port fixes.  [Dean Gaudet]
  4734.  
  4735.   *) HARD_SERVER_LIMIT can be defined in the Configuration file now.
  4736.      [Dean Gaudet]
  4737.  
  4738. Changes with Apache 1.2b8
  4739.  
  4740.   *) suexec.c doesn't close the log file, allowing CGIs to continue writing
  4741.      to it.  [Marc Slemko]
  4742.  
  4743.   *) The addition of <Location> and <File> directives made the
  4744.      sub_req_lookup_simple() function bogus, so we now handle
  4745.      the special cases directly.  [Dean Gaudet]
  4746.  
  4747.   *) We now try to log where the server is dumping core when a fatal
  4748.      signal is received.  [Ken Coar]
  4749.  
  4750.   *) Improved lingering_close by adding a special timeout, removing the
  4751.      spurious log messages, removing the nonblocking settings (they
  4752.      are not needed with the better timeout), and adding commentary
  4753.      about the NO_LINGCLOSE and USE_SO_LINGER issues.  NO_LINGCLOSE is
  4754.      now the default for SunOS4, UnixWare, NeXT, and IRIX.  [Roy Fielding]
  4755.  
  4756.   *) Send error messages about setsockopt failures to the server error
  4757.      log instead of stderr.  [Roy Fielding]
  4758.  
  4759.   *) Fix loopholes in proxy cache expiry vis a vis alarms. [Brian Moore]
  4760.  
  4761.   *) Stopgap solution for CGI 3-second delay with server-side includes: if
  4762.      processing a subrequest, allocate memory from r->main->pool instead
  4763.      of r->pool so that we can avoid waiting for free_proc_chain to cleanup
  4764.      in the middle of an SSI request.  [Dean Gaudet] PR #122
  4765.  
  4766.   *) Fixed status of response when POST is received for a nonexistent URL
  4767.      (was sending 405, now 404) and when any method is sent with a
  4768.      full-URI that doesn't match the server and the server is not acting
  4769.      as a proxy (was sending 501, now 403).  [Roy Fielding]
  4770.  
  4771.   *) Host port changed to unsigned short. [Ken Coar] PR #276
  4772.  
  4773.   *) Fix typo in command definition of AuthAuthoritative. [Ken Coar] PR #246
  4774.  
  4775.   *) Defined USE_SHMGET_SCOREBOARD for shared memory on Linux.  [Dean Gaudet]
  4776.  
  4777.   *) Report extra info from errno with many errors that cause httpd to exit.
  4778.      spawn_child, popenf, and pclosef now have valid errno returns in the
  4779.      event of an error.  Correct problems where errno was stomped on
  4780.      before being reported.  [Dean Gaudet]
  4781.  
  4782.   *) In the proxy, if the cache filesystem was full, garbage_coll() was
  4783.      never called, and thus the filesystem would remain full indefinitely.
  4784.      We now also remove incomplete cache files left if the origin server
  4785.      didn't send a Content-Length header and either the client has aborted
  4786.      transfer or bwrite() to client has failed. [Petr Lampa]
  4787.  
  4788.   *) Fixed the handling of module and script-added header fields.
  4789.      Improved the interface for sending header fields and reduced
  4790.      the duplication of code between sending okay responses and errors.
  4791.      We now always send both headers_out and err_headers_out, and
  4792.      ensure that the server-reserved fields are not being overridden,
  4793.      while not overriding those that are not reserved.  [Roy Fielding]
  4794.  
  4795.   *) Moved transparent content negotiation fields to err_headers_out
  4796.      to reflect above changes.  [Petr Lampa]
  4797.  
  4798.   *) Fixed the determination of whether or not we should make the
  4799.      connection persistent for all of the cases where some other part
  4800.      of the server has already indicated that we should not.  Also
  4801.      improved the ordering of the test so that chunked encoding will
  4802.      be set whenever it is desired instead of only when KeepAlive
  4803.      is enabled. Added persistent connection capability for most error
  4804.      responses (those that do not indicate a bad input stream) when
  4805.      accessed by an HTTP/1.1 client. [Roy Fielding]
  4806.  
  4807.   *) Added missing timeouts for sending header fields, error responses,
  4808.      and the last chunk of chunked encoding, each of which could have
  4809.      resulted in a process being stuck in write forever.  Using soft_timeout
  4810.      requires that the sender check for an aborted connection rather than
  4811.      continuing after an EINTR.  Timeouts that used to be initiated before
  4812.      send_http_header (and never killed) are now initiated only within or
  4813.      around the routines that actually do the sending, and not allowed to
  4814.      propagate above the caller.  [Roy Fielding]
  4815.  
  4816.   *) mod_auth_anon required an @ or a . in the email address, not both.
  4817.      [Dirk vanGulik]
  4818.  
  4819.   *) per_dir_defaults weren't set correctly until directory_walk for
  4820.      name-based vhosts.  This fixes an obscure bug with the wrong config
  4821.      info being used for vhosts that share the same ip as the server.
  4822.      [Dean Gaudet]
  4823.  
  4824.   *) Improved generation of modules/Makefile to be more generic for
  4825.      new module directories. [Ken Coar, Chuck Murcko, Roy Fielding]
  4826.  
  4827.   *) Generate makefile dependency for Configuration based on the actual
  4828.      name given when running the Configure process.  [Dean Gaudet]
  4829.  
  4830.   *) Fixed problem with vhost error log not being set prior to
  4831.      initializing virtual hosts. [Dean Gaudet]
  4832.  
  4833.   *) Fixed infinite loop when a trailing slash is included after a type map
  4834.      file URL (extra path info). [Petr Lampa]
  4835.  
  4836.   *) Fixed server status updating of per-connection counters. [Roy Fielding]
  4837.  
  4838.   *) Add documentation for DNS issues (reliability and security), and try
  4839.      to explain the virtual host matching process.  [Dean Gaudet]
  4840.  
  4841.   *) Try to continue gracefully by disabling the vhost if a DNS lookup
  4842.      fails while parsing the configuration file.  [Dean Gaudet]
  4843.  
  4844.   *) Improved calls to setsockopt.  [Roy Fielding]
  4845.  
  4846.   *) Negotiation changes: Don't output empty content-type in variant list;
  4847.      Output charset in variant list; Return sooner from handle_multi() if
  4848.      no variants found; Add handling of '*' wildcard in Accept-Charset.
  4849.      [Petr Lampa and Paul Sutton]
  4850.  
  4851.   *) Fixed overlaying of request/sub-request notes and headers in
  4852.      mod_negotiation.  [Dean Gaudet]
  4853.  
  4854.   *) If two variants' charset quality are equal and one is the default
  4855.      charset (iso-8859-1), then prefer the variant that was specifically
  4856.      listed in Accept-Charset instead of the default.  [Petr Lampa]
  4857.  
  4858.   *) Memory allocation problem in push_array() -- it would corrupt memory
  4859.      when nalloc==0.  [Kai Risku <krisku@tf.hut.fi> and Roy Fielding]
  4860.  
  4861.   *) invoke_handler() doesn't handle mime arguments in content-type
  4862.      [Petr Lampa] PR#160
  4863.  
  4864.   *) Reduced IdentityCheck timeout to 30 seconds, as per RFC 1413 minimum.
  4865.      [Ken Coar]
  4866.  
  4867.   *) Fixed problem with ErrorDocument not working for virtual hosts
  4868.      due to one of the performance changes in 1.2b7. [Dean Gaudet]
  4869.  
  4870.   *) Log an error message if we get a request header that is too long,
  4871.      since it may indicate a buffer overflow attack. [Marc Slemko]
  4872.  
  4873.   *) Made is_url() allow "[-.+a-zA-Z0-9]+:" as a valid scheme and
  4874.      not reject URLs without a double-slash, as per RFC2068 section 3.2.
  4875.      [Ken Coar] PR #146, #187
  4876.  
  4877.   *) Added table entry placeholder for new header_parser callback
  4878.      in all of the distributed modules. [Ken Coar] PR #191
  4879.  
  4880.   *) Allow for cgi files without the .EXE extension on them under OS/2.
  4881.      [Garey Smiley] PR #59
  4882.  
  4883.   *) Fixed error message when resource is not found and URL contains
  4884.      path info. [Petr Lampa and Dean Gaudet] PR #40
  4885.  
  4886.   *) Fixed user and server confusion over what should be a virtual host
  4887.      and what is the main server, resulting in access to something
  4888.      other than the name defined in the virtualhost directive (but
  4889.      with the same IP address) failing. [Dean Gaudet]
  4890.  
  4891.   *) Updated mod_rewrite to version 3.0.2, which: fixes compile error on
  4892.      AIX; improves the redirection stuff to enable the users to generally
  4893.      redirect to http, https, gopher and ftp; added TIME variable for
  4894.      RewriteCond which expands to YYYYMMDDHHMMSS strings and added the
  4895.      special patterns >STRING, <STRING and =STRING to RewriteCond, which
  4896.      can be used in conjunction with %{TIME} or other variables to create
  4897.      time-dependent rewriting rules. [Ralf S. Engelschall]
  4898.  
  4899.   *) bpushfd() no longer notes cleanups for the file descriptors it is handed.
  4900.      Module authors may need to adjust their code for proper cleanup to take
  4901.      place (that is, call note_cleanups_for_fd()). This change fixes problems
  4902.      with file descriptors being erroneously closed when the proxy module was
  4903.      in use. [Ben Laurie]
  4904.  
  4905.   *) Fix bug in suexec reintroduced by changes in 1.2b7 which allows
  4906.      initgroups() to hose the group information needed for later
  4907.      comparisons. [Randy Terbush]
  4908.  
  4909.   *) Remove unnecessary call to va_end() in create_argv() which
  4910.      caused a SEGV on some systems.
  4911.  
  4912.   *) Use proper MAXHOSTNAMELEN symbol for limiting length of server name.
  4913.      [Dean Gaudet]
  4914.  
  4915.   *) Clear memory allocated for listeners. [Randy Terbush]
  4916.  
  4917.   *) Improved handling of IP address as a virtualhost address and
  4918.      introduced "_default_" as a synonym for the default vhost config.
  4919.      [Dean Gaudet] PR #212
  4920.  
  4921. Changes with Apache 1.2b7
  4922.  
  4923.   *) Port to  UXP/DS(V20) [Toshiaki Nomura <nom@yk.fujitsu.co.jp>]
  4924.  
  4925.   *) unset Content-Length if chunked (RFC-2068) [Petr Lampa]
  4926.  
  4927.   *) mod_negotiation fixes [Petr Lampa] PR#157, PR#158, PR#159
  4928.      - replace protocol response numbers with symbols
  4929.      - save variant-list into main request notes
  4930.      - free allocated memory from subrequests
  4931.      - merge notes, headers_out and err_headers_out
  4932.  
  4933.   *) changed status check mask in proxy_http.c from "HTTP/#.# ### *" to
  4934.      "HTTP/#.# ###*" to be more lenient about what we accept.
  4935.      [Chuck Murcko]
  4936.  
  4937.   *) more proxy FTP bug fixes:
  4938.      - Changed send_dir() to remove user/passwd from displayed URL.
  4939.      - Changed login error messages to be more descriptive.
  4940.      - remove setting of SO_DEBUG socket option
  4941.      - Make ftp_getrc() more lenient about multiline responses,
  4942.        specifically, 230 responses which don't have continuation 230-
  4943.        on each line). These seem to be all NT FTP servers, and while
  4944.        perhaps questionable, they appear to be legal by RFC 959.
  4945.      - Add missing kill_timeout() after transfer to user completes.
  4946.      [Chuck Murcko]
  4947.  
  4948.   *) Fixed problem where a busy server could hang when restarting
  4949.      after being sent a SIGHUP due to child processes not exiting.
  4950.      [Marc Slemko]
  4951.  
  4952.   *) Modify mod_include escaping so a '\' only signifies an escaped
  4953.      character if the next character is one that needs
  4954.      escaping.  [Ben Laurie]
  4955.  
  4956.   *) Eliminated possible infinite loop in mod_imap when relative URLs are
  4957.      used with a 'base' directive that does not have a '/' in it.
  4958.      [Marc Slemko, reported by Onno Witvliet <onno@tc.hsa.nl>]
  4959.  
  4960.   *) Reduced the default timeout from 1200 seconds to 300, and the
  4961.      one in the sample configfile from 400 to 300.  [Marc Slemko]
  4962.  
  4963.   *) Stop vbprintf from crashing if given a NULL string pointer;
  4964.      print (null) instead.  [Ken Coar]
  4965.  
  4966.   *) Don't disable Nagle algorithm if system doesn't have TCP_NODELAY.
  4967.      [Marc Slemko and Roy Fielding]
  4968.  
  4969.   *) Fixed problem with mod_cgi-generated internal redirects trying to
  4970.      read the request message-body twice. [Archie Cobbs and Roy Fielding]
  4971.  
  4972.   *) Reduced timeout on lingering close, removed possibility of a blocked
  4973.      read causing the child to hang, and stopped logging of errors if
  4974.      the socket is not connected (reset by client).  [Roy Fielding]
  4975.  
  4976.   *) Rearranged main child loop to remove duplication of code in
  4977.      select/accept and keep-alive requests, fixed several bugs regarding
  4978.      checking scoreboard_image for exit indication and failure to
  4979.      account for all success conditions and trap all error conditions,
  4980.      prevented multiple flushes before closing the socket; close the entire
  4981.      socket buffer instead of just one descriptor, prevent logging of
  4982.      EPROTO and ECONNABORTED on platforms where supported, and generally
  4983.      improved readability.  [Roy Fielding]
  4984.  
  4985.   *) Extensive performance improvements. Cleaned up inefficient use of
  4986.      auto initializers, multiple is_matchexp calls on a static string,
  4987.      and excessive merging of response_code_strings. [Dean Gaudet]
  4988.  
  4989.   *) Added double-buffering to mod_include to improve performance on
  4990.      server-side includes. [Marc Slemko]
  4991.  
  4992.   *) Several fixes for suexec wrapper. [Randy Terbush]
  4993.      - Make wrapper work for files on NFS filesystem.
  4994.      - Fix portability problem of MAXPATHLEN.
  4995.      - Fix array overrun problem in clean_env().
  4996.      - Fix allocation of PATH environment variable
  4997.  
  4998.   *) Removed extraneous blank line is description of mod_status chars.
  4999.      [Kurt Kohler]
  5000.  
  5001.   *) Logging of errors from the call_exec routine simply went nowhere,
  5002.      since the logfile fd has been closed, so now we send them to stderr.
  5003.      [Harald T. Alvestrand]
  5004.  
  5005.   *) Fixed core dump when DocumentRoot is a CGI.
  5006.      [Ben Laurie, reported by geddis@tesserae.com]
  5007.  
  5008.   *) Fixed potential file descriptor leak in mod_asis; updated it and
  5009.      http_core to use pfopen/pfclose instead of fopen/fclose.
  5010.      [Randy Terbush and Roy Fielding]
  5011.  
  5012.   *) Fixed handling of unsigned ints in ap_snprintf() on some chips such
  5013.      as the DEC Alpha which is 64-bit but uses 32-bit ints.
  5014.      [Dean Gaudet and Ken Coar]
  5015.  
  5016.   *) Return a 302 response code to the client when sending a redirect
  5017.      due to a missing trailing '/' on a directory instead of a 301; now
  5018.      it is cacheable. [Markus Gyger]
  5019.  
  5020.   *) Fix condition where, if a bad directive occurs in .htaccess, and
  5021.      sub_request() goes first to this directory, then log_reason() will
  5022.      SIGSEGV because it doesn't have initialized r->per_dir_config.
  5023.      [PR#162 from Petr Lampa, fix by Marc Slemko and Dean Gaudet]
  5024.  
  5025.   *) Fix handling of lang_index in is_variant_better().  This was
  5026.      causing problems which resulted in the server sending the
  5027.      wrong language document in some cases. [Petr Lampa]
  5028.  
  5029.   *) Remove free() from clean_env() in suexec wrapper. This was nuking
  5030.      the clean environment on some systems.
  5031.  
  5032.   *) Tweak byteserving code (e.g. serving PDF files) to work around
  5033.      bugs in Netscape Navigator and Microsoft Internet Explorer.
  5034.      Emit Content-Length header when sending multipart/byteranges.
  5035.      [Alexei Kosut]
  5036.  
  5037.   *) Port to HI-UX/WE2. [Nick Maclaren]
  5038.  
  5039.   *) Port to HP MPE operating system for HP 3000 machines
  5040.      [Mark Bixby <markb@cccd.edu>]
  5041.  
  5042.   *) Fixed bug which caused a segmentation fault if only one argument
  5043.      given to RLimit* directives. [Ed Korthof]
  5044.  
  5045.   *) Continue persistent connection after 204 or 304 response. [Dean Gaudet]
  5046.  
  5047.   *) Improved buffered output to the client by delaying the flush decision
  5048.      until the BUFF code is actually about to read the next request.
  5049.      This fixes a problem introduced in 1.2b5 with clients that send
  5050.      an extra CRLF after a POST request. Also improved chunked output
  5051.      performance by combining writes using writev() and removing as
  5052.      many bflush() calls as possible.  NOTE: Platforms without writev()
  5053.      must add -DNO_WRITEV to the compiler CFLAGS, either in Configuration
  5054.      or Configure, unless we have already done so.  [Dean Gaudet]
  5055.  
  5056.   *) Fixed mod_rewrite bug which truncated the rewritten URL [Marc Slemko]
  5057.  
  5058.   *) Fixed mod_info output corruption bug introduced by buffer overflow
  5059.      fixes. [Dean Gaudet]
  5060.  
  5061.   *) Fixed http_protocol to correctly output all HTTP/1.1 headers, including
  5062.      for the special case of a 304 response.  [Paul Sutton]
  5063.  
  5064.   *) Improved handling of TRACE method by bypassing normal method handling
  5065.      and header parsing routines; fixed Allow response to always allow TRACE.
  5066.      [Dean Gaudet]
  5067.  
  5068.   *) Fixed compiler warnings in the regex library. [Dean Gaudet]
  5069.  
  5070.   *) Cleaned-up some of the generated HTML. [Ken Coar]
  5071.  
  5072. Changes with Apache 1.2b6
  5073.  
  5074.   *) Allow whitespace in imagemap mapfile coordinates. [Marc Slemko]
  5075.  
  5076.   *) Fix typo introduced in fix for potential infinite loop around
  5077.      accept() in child_main(). This change caused the rev to 1.2b6.
  5078.      1.2b5 was never a public beta.
  5079.  
  5080. Changes with Apache 1.2b5
  5081.  
  5082.   *) Change KeepAlive semantics (On|Off instead of a number), add
  5083.      MaxKeepAliveRequests directive. [Alexei Kosut]
  5084.  
  5085.   *) Various NeXT compilation patches, as well as a change in
  5086.      regex/regcomp.c since that file also used a NEXT define.
  5087.      [Andreas Koenig]
  5088.  
  5089.   *) Allow * to terminate the end of a directory match in mod_dir.
  5090.      Allows /~* to match for both /~joe and /~joe/. [David Bronder]
  5091.  
  5092.   *) Don't call can_exec() if suexec_enabled. Calling this requires
  5093.      scripts executed by the suexec wrapper to be world executable, which
  5094.      defeats one of the advantages of running the wrapper. [Randy Terbush]
  5095.  
  5096.   *) Portability Fix: IRIX complained with 'make clean' about *pure* (removed)
  5097.      [Jim Jagielski]
  5098.  
  5099.   *) Migration from sprintf() to snprintf() to avoid buffer
  5100.      overflows. [Marc Slemko]
  5101.  
  5102.   *) Provide portable snprintf() implementation (ap_snprintf)
  5103.      as well as *cvt family. [Jim Jagielski]
  5104.  
  5105.   *) Portability Fix: NeXT lacks unistd.h so we wrap it's inclusion
  5106.      [Jim Jagielski]
  5107.  
  5108.   *) Remove mod_fastcgi.c from the distribution. This module appears
  5109.      to be maintained more through the Open Market channels and should
  5110.      continue to be easily available at http://www.fastcgi.com/
  5111.  
  5112.   *) Fixed bug in modules/Makefile that wouldn't allow building in more
  5113.      than one subdirectory (or cleaning, either). [Jeremy Laidman]
  5114.  
  5115.   *) mod_info assumed that the config files were relative to ServerRoot.
  5116.      [Ken the Rodent]
  5117.  
  5118.   *) CGI scripts called as an error document resulting from failed
  5119.      CGI execution would hang waiting for POST'ed data. [Rob Hartill]
  5120.  
  5121.   *) Log reason when mod_dir returns access HTTP_FORBIDDEN
  5122.      [Ken the Rodent]
  5123.  
  5124.   *) Properly check errno to prevent display of a directory index
  5125.      when server receives a long enough URL to confuse stat().
  5126.      [Marc Slemko]
  5127.  
  5128.   *) Several security enhancements to suexec wrapper. It is _highly_
  5129.      recommended that previously installed versions of the wrapper
  5130.      be replaced with this version.  [Randy Terbush, Jason Dour]
  5131.  
  5132.         - ~user execution now properly restricted to ~user's home
  5133.           directory and below.
  5134.         - execution restricted to UID/GID > 100
  5135.         - restrict passed environment to known variables
  5136.         - call setgid() before initgroups() (portability fix)
  5137.         - remove use of setenv() (portability fix)
  5138.  
  5139.   *) Add HTTP/1.0 response forcing. [Ben Laurie]
  5140.  
  5141.   *) Add access control via environment variables. [Ben Laurie]
  5142.  
  5143.   *) Add rflush() function. [Alexei Kosut]
  5144.  
  5145.   *) remove duplicate pcalloc() call in new_connection().
  5146.  
  5147.   *) Fix incorrect comparison which could allow number of children =
  5148.      MaxClients + 1 if less than HARD_SERVER_LIMIT. Also fix potential
  5149.      problem if StartServers > HARD_SERVER_LIMIT. [Ed Korthof]
  5150.  
  5151.   *) Updated support for OSes (MachTen, ULTRIX, Paragon, ISC, OpenBSD
  5152.      AIX PS/2, CONVEXOS. [Jim Jagielski]
  5153.  
  5154.   *) Replace instances of inet_ntoa() with inet_addr() for ProxyBlock.
  5155.      It's more portable. [Martin Kraemer]
  5156.  
  5157.   *) Replace references to make in Makefile.tmpl with $(MAKE).
  5158.      [Chuck Murcko]
  5159.  
  5160.   *) Add ProxyBlock directive w/IP address caching. Add IP address
  5161.      caching to NoCache directive as well. ProxyBlock works with all
  5162.      handlers; NoCache now also works with FTP for anonymous logins.
  5163.      Still more code cleanup. [Chuck Murcko]
  5164.  
  5165.   *) Add "header parse" API hook [Ben Laurie]
  5166.  
  5167.   *) Fix byte ordering problems for REMOTE_PORT [Chuck Murcko]
  5168.  
  5169.   *) suEXEC wrapper was freeing memory that had not been malloc'ed.
  5170.  
  5171.   *) Correctly allow access and auth directives in <Files> sections in
  5172.      server config files. [Alexei Kosut]
  5173.  
  5174.   *) Fix bug with ServerPath that could cause certain files to be not
  5175.      found by the server. [Alexei Kosut]
  5176.  
  5177.   *) Fix handling of ErrorDocument so that it doesn't remove a trailing
  5178.      double-quote from text and so that it properly checks for unsupported
  5179.      status codes using the new index_of_response interface. [Roy Fielding]
  5180.  
  5181.   *) Multiple fixes to the lingering_close code in order to avoid being
  5182.      interrupted by a stray timeout, to avoid lingering on a connection
  5183.      that has already been aborted or never really existed, to ensure that
  5184.      we stop lingering as soon as any error condition is received, and to
  5185.      prevent being stuck indefinitely if the read blocks.  Also improves
  5186.      reporting of error conditions.  [Marc Slemko and Roy Fielding]
  5187.  
  5188.   *) Fixed initialization of parameter structure for sigaction.
  5189.      [mgyger@itr.ch, Adrian Filipi-Martin]
  5190.  
  5191.   *) Fixed reinitializing the parameters before each call to accept and
  5192.      select, and removed potential for infinite loop in accept.
  5193.      [Roy Fielding, after useful PR from adrian@virginia.edu]
  5194.  
  5195.   *) Fixed condition where, if a child fails to fork, the scoreboard would
  5196.      continue to say SERVER_STARTING forever. Eventually, the main process
  5197.      would refuse to start new children because count_idle_servers() will
  5198.      count those SERVER_STARTING entries and will always report that there
  5199.      are enough idle servers. [Phillip Vandry]
  5200.  
  5201.   *) Fixed bug in bcwrite regarding failure to account for partial writes.
  5202.      Avoided calling bflush() when the client is pipelining requests.
  5203.      Removed unnecessary flushes from http_protocol. [Dean Gaudet]
  5204.  
  5205.   *) Added description of "." mode in server-status [Jim Jagielski]
  5206.  
  5207.  
  5208. Changes with Apache 1.2b4:
  5209.  
  5210.   *) Fix possible race condition in accept_mutex_init() that
  5211.      could leave a small security hole open allowing files to be
  5212.      overwritten in cases where the server UID has write permissions.
  5213.      [Marc Slemko]
  5214.  
  5215.   *) Fix awk compatibilty problem in Configure. [Jim Jagielski]
  5216.  
  5217.   *) Fix portablity problem in util_script where ARG_MAX may not be
  5218.      defined for some systems.
  5219.  
  5220.   *) Add changes to allow compilation on Machten 4.0.3 for PowerPC.
  5221.      [Randal Schwartz]
  5222.  
  5223.   *) OS/2 changes to support an MMAP style scoreboard file and UNIX
  5224.      style magic #! token for better script portability. [Garey Smiley]
  5225.  
  5226.   *) Fix bug in suexec wrapper introduced in b3 that would cause failed
  5227.      execution for ~userdir CGI. [Jason Dour]
  5228.  
  5229.   *) Fix initgroups() business in suexec wrapper. [Jason Dour]
  5230.  
  5231.   *) Fix month off by one in suexec wrapper logging.
  5232.  
  5233. Changes with Apache 1.2b3:
  5234.  
  5235.   *) Fix error in mod_cgi which could cause resources not to be properly
  5236.      freed, or worse. [Dean Gaudet]
  5237.  
  5238.   *) Fix find_string() NULL pointer dereference. [Howard Fear]
  5239.  
  5240.   *) Add set_flag_slot() at the request of Dirk and others.
  5241.      [Dirk vanGulik]
  5242.  
  5243.   *) Sync mod_rewrite with patch level 10. [Ralf Engelschall]
  5244.  
  5245.   *) Add changes to improve the error message given for invalid
  5246.      ServerName parameters. [Dirk vanGulik]
  5247.  
  5248.   *) Add "Authoritative" directive for Auth modules that don't
  5249.      currently have it. This gives admin control to assign authoritative
  5250.      control to an authentication scheme and allow "fall through" for
  5251.      those authentication modules that aren't "Authoritative" thereby
  5252.      allowing multiple authentication mechanisms to be chained.
  5253.      [Dirk vanGulik]
  5254.  
  5255.   *) Remove requirement for ResourceConfig/AccessConfig if not using
  5256.      the three config file layout. [Randy Terbush]
  5257.  
  5258.   *) Add PASV mode to mod_proxy FTP handler. [Chuck Murcko]
  5259.  
  5260.   *) Changes to suexec wrapper to fix the following problems:
  5261.      1.  symlinked homedirs will kill ~userdirs.
  5262.      2.  initgroups() on Linux 2.0.x clobbers gr->grid.
  5263.      3.  CGI command lines paramters problems
  5264.      4.  pw-pwdir for "docroot check" still the httpd user's pw record.
  5265.     [Randy Terbush, Jason Dour]
  5266.  
  5267.   *) Change create_argv() to accept variable arguments. This fixes
  5268.      a problem where arguments were not getting passed to the CGI via
  5269.      argv[] when the suexec wrapper was active. [Randy Terbush, Jake Buchholz]
  5270.  
  5271.   *) Collapse multiple slashes in path URLs to properly apply
  5272.      handlers defined by <Location>. [Alexei Kosut]
  5273.  
  5274.   *) Define a sane set of DEFAULT_USER and DEFAULT_GROUP values for AIX.
  5275.  
  5276.   *) Improve the accuracy of request duration timings by setting
  5277.      r->request_time in read_request_line() instead of read_request().
  5278.      [Dean Gaudet]
  5279.  
  5280.   *) Reset timeout while reading via get_client_block() in mod_cgi.c
  5281.      Fixes problem with timed out transfers of large files. [Rasmus Lerdorf]
  5282.  
  5283.   *) Add the ability to pass different Makefile.tmpl files to Configure
  5284.      using the -make flag. [Rob Hartill]
  5285.  
  5286.   *) Fix coredump triggered when sending a SIGHUP to the server caused
  5287.      by an assertion failure, in turn caused by an uninitialised field in a
  5288.      listen_rec.
  5289.      [Ben Laurie]
  5290.  
  5291.   *) Add FILEPATH_INFO variable to CGI environment, which is equal to
  5292.      PATH_INFO from previous versions of Apache (in certain situations,
  5293.      Apache 1.2's PATH_INFO will be different than 1.1's). [Alexei Kosut]
  5294.      [later removed in 1.2b11]
  5295.  
  5296.   *) Add rwrite() function to API to allow for sending strings of
  5297.      arbitrary length. [Doug MacEachern]
  5298.  
  5299.   *) Remove rlim_t typedef for NetBSD. Do older versions need this?
  5300.  
  5301.   *) Defined rlim_t and WANTHSREGEX=yes and fixed waitpid() substitute for
  5302.      NeXT. [Jim Jagielski]
  5303.  
  5304.   *) Removed recent modification to promote the status code on internal
  5305.      redirects, since the correct fix was to change the default log format
  5306.      in mod_log_config so that it outputs the original status. [Rob Hartill]
  5307.  
  5308. Changes with Apache 1.2b2:
  5309.  
  5310.   *) Update set_signals() to use sigaction() for setting handlers.
  5311.      This appears to fix a re-entrant problem in the seg_fault()
  5312.      bus_error() handlers. [Randy Terbush]
  5313.  
  5314.   *) Changes to allow mod_status compile for OS/2 [Garey Smiley]
  5315.  
  5316.   *) changes for DEC AXP running OSF/1 v3.0. [Marc Evans]
  5317.  
  5318.   *) proxy_http.c bugfixes:  [Chuck Murcko]
  5319.         1) fixes possible NULL pointer reference w/NoCache
  5320.         2) fixes NoCache behavior when using ProxyRemote (ProxyRemote
  5321.            host would cache nothing if it was in the local domain,
  5322.            and the local domain was in the NoCache list)
  5323.         3) Adds Host: header when not available
  5324.         4) Some code cleanup and clarification
  5325.  
  5326.   *) mod_include.c bugfixes:
  5327.         1) Fixed an ommission that caused include variables to not
  5328.            be parsed in config errmsg directives [Howard Fear]
  5329.         2) Remove HAVE_POSIX_REGEX cruft [Alexei Kosut]
  5330.         3) Patch to fix compiler warnings [perrot@lal.in2p3.fr]
  5331.         4) Allow backslash-escaping to all quoted text
  5332.            [Ben Yoshino <ben@wiliki.eng.hawaii.edu>]
  5333.         5) Pass variable to command line if not set in XSSI's env
  5334.            [Howard Fear]
  5335.  
  5336.   *) Fix infinite loop when processing Content-language lines in
  5337.      type-map files. [Alexei Kosut]
  5338.  
  5339.   *) Closed file-globbing hole in test-cgi script. [Brian Behlendorf]
  5340.  
  5341.   *) Fixed problem in set_[user|group] that prevented CGI execution
  5342.      for non-virtualhosts when suEXEC was enabled. [Randy Terbush]
  5343.  
  5344.   *) Added PORTING information file.  [Jim Jagielski]
  5345.  
  5346.   *) Added definitions for S_IWGRP and S_IWOTH to conf.h [Ben Laurie]
  5347.  
  5348.   *) Changed default group to "nogroup" instead of "nobody" [Randy Terbush]
  5349.  
  5350.   *) Fixed define typo of FCNTL_SERIALIZED_ACCEPT where
  5351.      USE_FCNTL_SERIALIZED_ACCEPT was intended.
  5352.  
  5353.   *) Fixed additional uses of 0xffffffff where INADDR_NONE was intended,
  5354.      which caused problems of systems where socket s_addr is >32bits.
  5355.  
  5356.   *) Added comment to explain (r->chunked = 1) side-effect in
  5357.      http_protocol.c [Roy Fielding]
  5358.  
  5359.   *) Replaced use of index() in mod_expires.c with more appropriate
  5360.      and portable isdigit() test.  [Ben Laurie]
  5361.  
  5362.   *) Updated Configure for ...
  5363.         OS/2          (DEF_WANTHSREGEX=yes, other code changes)
  5364.         *-dg-dgux*    (bad pattern match)
  5365.         QNX           (DEF_WANTHSREGEX=yes)
  5366.         *-sunos4*     (DEF_WANTHSREGEX=yes, -DUSEBCOPY)
  5367.         *-ultrix      (new)
  5368.         *-unixware211 (new)
  5369.      and added some user diagnostic info.  [Ben Laurie]
  5370.  
  5371.   *) In helpers/CutRule, replaced "cut" invocation with "awk" invocation
  5372.      for better portability. [Jim Jagielski]
  5373.  
  5374.   *) Updated helpers/GuessOS for ...
  5375.         SCO 5            (recognize minor releases)
  5376.         SCO UnixWare     (braindamaged uname, whatever-whatever-unixware2)
  5377.         SCO UnixWare 2.1.1      (requires a separate set of #defines in conf.h)
  5378.         IRIX64           (-sgi-irix64)
  5379.         ULTRIX           (-unknown-ultrix)
  5380.         SINIX            (-whatever-sysv4)
  5381.         NCR Unix         (-ncr-sysv4)
  5382.      and fixed something in helpers/PrintPath  [Ben Laurie]
  5383.  
  5384. Changes with Apache 1.2b1:
  5385.  
  5386.   *) Not listed. See <http://www.apache.org/docs/new_features_1_2.html>
  5387.  
  5388. Changes with Apache 1.1.1:
  5389.  
  5390.   *) Fixed bug where Cookie module would make two entries in the
  5391.      logfile for each access [Mark Cox]
  5392.  
  5393.   *) Fixed bug where Redirect in .htaccess files would cause memory
  5394.      leak. [Nathan Neulinger]
  5395.  
  5396.   *) MultiViews now works correctly with AddHandler [Alexei Kosut]
  5397.  
  5398.   *) Problems with mod_auth_msql fixed [Dirk vanGulik]
  5399.  
  5400.   *) Fix misspelling of "Anonymous_Authorative" directive in mod_auth_anon.
  5401.  
  5402. Changes with Apache 1.1.0:
  5403.  
  5404.   *) Bring NeXT support up to date. [Takaaki Matsumoto]
  5405.  
  5406.   *) Bring QNX support up to date. [Ben Laurie]
  5407.  
  5408.   *) Make virtual hosts default to main server keepalive parameters.
  5409.      [Alexei Kosut, Ben Laurie]
  5410.  
  5411.   *) Allow ScanHTMLTitles to work with lowercase <title> tags. [Alexei Kosut]
  5412.  
  5413.   *) Fix missing address family for connect, also remove unreachable statement
  5414.      in mod_proxy. [Ben Laurie]
  5415.  
  5416.   *) mod_env now turned on by default in Configuration.tmpl.
  5417.  
  5418.   *) Bugs which were fixed:
  5419.         a) yet more mod_proxy bugs [Ben Laurie]
  5420.         b) CGI works again with inetd [Alexei Kosut]
  5421.         c) Leading colons were stripped from passwords [osm@interguide.com]
  5422.         d) Another fix to multi-method Limit problem [jk@tools.de]
  5423.  
  5424. Changes with Apache 1.1b4:
  5425.  
  5426.   *) r->bytes_sent variable restored. [Robert Thau]
  5427.  
  5428.   *) Previously broken multi-method <Limit> parsing fixed. [Robert Thau]
  5429.  
  5430.   *) More possibly unsecure programs removed from the support directory.
  5431.  
  5432.   *) More mod_auth_msql authentication improvements.
  5433.  
  5434.   *) VirtualHosts based on Host: headers no longer conflict with the
  5435.      Listen directive.
  5436.  
  5437.   *) OS/2 compatibility enhancements. [Gary Smiley]
  5438.  
  5439.   *) POST now allowed to directory index CGI scripts.
  5440.  
  5441.   *) Actions now work with files of the default type.
  5442.  
  5443.   *) Bugs which were fixed:
  5444.         a) more mod_proxy bugs
  5445.         b) early termination of inetd requests
  5446.         c) compile warnings on several systems
  5447.         d) problems when scripts stop reading output early
  5448.  
  5449. Changes with Apache 1.1b3:
  5450.  
  5451.   *) Much of cgi-bin and all of cgi-src has been removed, due to
  5452.      various security holes found and that we could no longer support
  5453.      them.
  5454.  
  5455.   *) The "Set-Cookie" header is now special-cased to not merge multiple
  5456.      instances, since certain popular browsers can not handle multiple
  5457.      Set-Cookie instructions in a single header. [Paul Sutton]
  5458.  
  5459.   *) rprintf() added to buffer code, occurrences of sprintf removed.
  5460.      [Ben Laurie]
  5461.  
  5462.   *) CONNECT method for proxy module, which means tunneling SSL should work.
  5463.      (No crypto needed)  Also a NoCache config directive.
  5464.  
  5465.   *) Several API additions: pstrndup(), table_unset() and get_token()
  5466.      functions now available to modules.
  5467.  
  5468.   *) mod_imap fixups, in particular Location: headers are now complete
  5469.      URL's.
  5470.  
  5471.   *) New "info" module which reports on installed module set through a
  5472.      special URL, a la mod_status.
  5473.  
  5474.   *) "ServerPath" directive added - allows for graceful transition
  5475.      for Host:-header-based virtual hosts.
  5476.  
  5477.   *) Anonymous authentication module improvements.
  5478.  
  5479.   *) MSQL authentication module improvements.
  5480.  
  5481.   *) Status module design improved - output now table-based. [Ben Laurie]
  5482.  
  5483.   *) htdigest utility included for use with digest authentication
  5484.      module.
  5485.  
  5486.   *) mod_negotiation: Accept values with wildcards to be treated with
  5487.      less priority than those without wildcards at the same quality
  5488.      value. [Alexei Kosut]
  5489.  
  5490.   *) Bugs which were fixed:
  5491.         a) numerous mod_proxy bugs
  5492.         b) CGI early-termination bug [Ben Laurie]
  5493.         c) Keepalives not working with virtual hosts
  5494.         d) RefererIgnore problems
  5495.         e) closing fd's twice in mod_include (causing core dumps on
  5496.            Linux and elsewhere).
  5497.  
  5498. Changes with Apache 1.1b2:
  5499.  
  5500.   *) Bugfixes:
  5501.         a) core dumps in mod_digest
  5502.         b) truncated hostnames/ip address in the logs
  5503.         c) relative URL's in mod_imap map files
  5504.  
  5505. Changes with Apache 1.1b1:
  5506.  
  5507.   *) Not listed. See <http://www.apache.org/docs/new_features_1_1.html>
  5508.  
  5509. Changes with Apache 1.0.3:
  5510.  
  5511.   *) Internal redirects which occur in mod_dir.c now preserve the
  5512.      query portion of a request (the bit after the question mark).
  5513.      [Adam Sussman]
  5514.  
  5515.   *) Escape active characters '<', '>' and '&' in html output in
  5516.      directory listings, error messages and redirection links.
  5517.      [David Robinson]
  5518.  
  5519.   *) Apache will now work with LynxOS 2.3 and later [Steven Watt]
  5520.  
  5521.   *) Fix for POSIX compliance in waiting for processes in alloc.c.
  5522.      [Nick Williams]
  5523.  
  5524.   *) setsockopt no longer takes a const declared argument [Martijn Koster]
  5525.  
  5526.   *) Reset timeout timer after each successful fwrite() to the network.
  5527.      This patch adds a reset_timeout() procedure that is called by
  5528.      send_fd() to reset the timeout ever time data is written to the net.
  5529.      [Nathan Schrenk]
  5530.  
  5531.   *) timeout() signal handler now checks for SIGPIPE and reports
  5532.      lost connections in a more user friendly way. [Rob Hartill]
  5533.  
  5534.   *) Location of the "scoreboard" file which used to live in /tmp is
  5535.      now configurable (for OSes that can't use mmap) via ScoreBoardFile
  5536.      which works similar to PidFile (in httpd.conf) [Rob Hartill]
  5537.  
  5538.   *) Include sys/resource.h in the correct place for SunOS4 [Sameer Parekh]
  5539.  
  5540.   *) the pstrcat call in mod_cookies.c didn't have an ending NULL,
  5541.      which caused a SEGV with cookies enabled
  5542.  
  5543.   *) Output warning when MinSpareServers is set to <= 0 and change it to 1
  5544.      [Rob Hartill]
  5545.  
  5546.   *) Log the UNIX textual error returned by some system calls, in
  5547.      particular errors from accept() [David Robinson]
  5548.  
  5549.   *) Add strerror function to util.c for SunOS4 [Randy Terbush]
  5550.  
  5551. Changes with Apache 1.0.2
  5552.  
  5553.   *) patch to get Apache compiled on UnixWare 2.x, recommended as
  5554.      a temporary measure, pending rewrite of rfc931.c. [Chuck Murcko]
  5555.  
  5556.   *) Fix get_basic_auth_pw() to set the auth_type of the request.
  5557.      [David Robinson]
  5558.  
  5559.   *) past changes to http_config.c to only use the
  5560.      setrlimit function on systems defining RLIMIT_NOFILE
  5561.      broke the feature on SUNOS4. Now defines HAVE_RESOURCE
  5562.      for SUNOS and prototypes the needed functions.
  5563.  
  5564.   *) Remove uses of MAX_STRING_LEN/HUGE_STRING_LEN from several routines.
  5565.      [David Robinson]
  5566.  
  5567.   *) Fix use of pointer to scratch memory. [Cliff Skolnick]
  5568.  
  5569.   *) Merge multiple headers from CGI scripts instead of taking last
  5570.      one. [David Robinson]
  5571.  
  5572.   *) Add support for SCO 5. [Ben Laurie]
  5573.  
  5574. Changes with Apache 1.0.1
  5575.  
  5576.   *) Silence mod_log_referer and mod_log_agent if not configured
  5577.      [Randy Terbush]
  5578.  
  5579.   *) Recursive includes can occur if the client supplies PATH_INFO data
  5580.      and the server provider uses relative links; as file.html
  5581.      relative to /doc.shtml/pathinfo is /doc.shtml/file.html. [David Robinson]
  5582.  
  5583.   *) The replacement for initgroups() did not call {set,end}grent(). This
  5584.      had two implications: if anything else used getgrent(), then
  5585.      initgroups() would fail, and it was consuming a file descriptor.
  5586.      [Ben Laurie]
  5587.  
  5588.   *) On heavily loaded servers it was possible for the scoreboard to get
  5589.      out of sync with reality, as a result of a race condition.
  5590.      The observed symptoms are far more Apaches running than should
  5591.      be, and heavy system loads, generally followed by catastrophic
  5592.      system failure. [Ben Laurie]
  5593.  
  5594.   *) Fix typo in license. [David Robinson]
  5595.  
  5596. Changes with Apache 1.0.0
  5597.  
  5598.   *) Not listed. See <http://www.apache.org/docs/new_features_1_0.html>
  5599.  
  5600. Changes with Apache 0.8.16
  5601.  
  5602.   *) New man page for 'httpd' added to support directory [David Robinson]
  5603.  
  5604.   *) .htgroup files can have more than one line giving members for a
  5605.      given group (each must have the group name in front), for NCSA
  5606.      back-compatibility [Robert Thau]
  5607.  
  5608.   *) Mutual exclusion around accept() is on by default for SVR4 systems
  5609.      generally, since they generally can't handle multiple processes in
  5610.      accept() on the same socket.  This should cure flaky behavior on
  5611.      a lot of those systems.  [David Robinson]
  5612.  
  5613.   *) AddType, AddEncoding, and AddLanguage directives take multiple
  5614.      extensions on a single command line [David Robinson]
  5615.  
  5616.   *) UserDir can be disabled for a given virtual host by saying
  5617.      "UserDir disabled" in the <VirtualHost> section --- it was a bug
  5618.      that this didn't work.  [David Robinson]
  5619.  
  5620.   *) Compiles on QNX [Ben Laurie]
  5621.  
  5622.   *) Corrected parsing of ctime time format [David Robinson]
  5623.  
  5624.   *) httpd does a perror() before exiting if it can't log its pid
  5625.      to the PidFile, to make diagnosing the error a bit easier.
  5626.      [David Robinson]
  5627.  
  5628.   *) <!--#include file="..."--> can no longer include files in the
  5629.      parent directory, for NCSA back-compatibility.  [David Robinson]
  5630.  
  5631.   *) '~' is *not* escaped in URIs generated for directory listings
  5632.      [Roy Fielding]
  5633.  
  5634.   *) Eliminated compiler warning in the imagemap module [Randy Terbush]
  5635.  
  5636.   *) Fixed bug involving handling URIs with escaped %-characters
  5637.      in redirects [David Robinson]
  5638.  
  5639. Changes with Apache 0.8.15
  5640.  
  5641.   *) Switched to new, simpler license
  5642.  
  5643.   *) Eliminated core dumps with improperly formatted DBM group files [Mark Cox]
  5644.  
  5645.   *) Don't allow requests for ordinary files to have PATH_INFO [Ben Laurie]
  5646.  
  5647.   *) Reject paths containing %-escaped '%' or null characters [David Robinson]
  5648.  
  5649.   *) Correctly handles internal redirects to files with names containing '%'
  5650.      [David Robinson]
  5651.  
  5652.   *) Repunctuated some error messages [Aram Mirzadeh, Andrew Wilson]
  5653.  
  5654.   *) Use geteuid() rather than getuid() to see if we have root privilege,
  5655.      so that server correctly resets privilege if run setuid root.  [Andrew
  5656.      Wilson]
  5657.  
  5658.   *) Handle ftp: and telnet: URLs correctly in imagemaps (built-in module)
  5659.      [Randy Terbush]
  5660.  
  5661.   *) Fix relative URLs in imagemap files [Randy Terbush]
  5662.  
  5663.   *) Somewhat better fix for the old "Alias /foo/ /bar/" business
  5664.      [David Robinson]
  5665.  
  5666.   *) Don't repeatedly open the ErrorLog if a bunch of <VirtualHost>
  5667.      entries all name the same one. [David Robinson]
  5668.  
  5669.   *) Fix directory listings with filenames containing unusual characters
  5670.      [David Robinson]
  5671.  
  5672.   *) Better URI-escaping for generated URIs in directories with filenames
  5673.      containing unusual characters [Ben Laurie]
  5674.  
  5675.   *) Fixed potential FILE* leak in http_main.c [Ben Laurie]
  5676.  
  5677.   *) Unblock alarms on error return from spawn_child() [David Robinson]
  5678.  
  5679.   *) Sample Config files have extra note for SCO users [Ben Laurie]
  5680.  
  5681.   *) Configuration has note for HP-UX users [Rob Hartill]
  5682.  
  5683.   *) Eliminated some bogus Linux-only #defines in conf.h [Aram Mirzadeh]
  5684.  
  5685.   *) Nuked bogus #define in httpd.h [David Robinson]
  5686.  
  5687.   *) Better test for whether a system has setrlimit() [David Robinson]
  5688.  
  5689.   *) Calls update_child_status() after reopen_scoreboard() [David Robinson]
  5690.  
  5691.   *) Doesn't send itself SIGHUP on startup when run in the -X debug-only mode
  5692.      [Ben Laurie]
  5693.  
  5694. Changes with Apache 0.8.14
  5695.  
  5696.   *) Compiles on SCO ODT 3.0 [Ben Laurie]
  5697.  
  5698.   *) AddDescription works (better) [Ben Laurie]
  5699.  
  5700.   *) Leaves an intelligible error diagnostic when it can't set group
  5701.      privileges on standalone startup [Andrew Wilson]
  5702.  
  5703.   *) Compiles on NeXT again --- the 0.8.13 RLIMIT patch was failing on
  5704.      that machine, which claims to be BSD but does not support RLIMIT.
  5705.      [Randy Terbush]
  5706.  
  5707.   *) gcc -Wall no longer complains about an unused variable when util.c
  5708.      is compiled with -DMINIMAL_DNS [Andrew Wilson]
  5709.  
  5710.   *) Nuked another compiler warning for -Wall on Linux [Aram Mirzadeh]
  5711.  
  5712. Changes with Apache 0.8.13
  5713.  
  5714.   *) Make IndexIgnore *work* (ooops) [Jarkko Torppa]
  5715.  
  5716.   *) Have built-in imagemap code recognize & honor Point directive [James
  5717.      Cloos]
  5718.  
  5719.   *) Generate cleaner directory listings in directories with a mix of
  5720.      long and short filenames [Rob Hartill]
  5721.  
  5722.   *) Properly initialize dynamically loaded modules [Royston Shufflebotham]
  5723.  
  5724.   *) Properly default ServerName for virtual servers [Robert Thau]
  5725.  
  5726.   *) Rationalize handling of BSD in conf.h and elsewhere [Randy Terbush,
  5727.      Paul Richards and a cast of thousands...]
  5728.  
  5729.   *) On self-identified BSD systems (we don't try to guess any more),
  5730.      allocate a few extra file descriptors per virtual host with setrlimit,
  5731.      if we can, to avoid running out. [Randy Terbush]
  5732.  
  5733.   *) Write 22-character lock file name into buffer with enough space
  5734.      on startup [Konstantin Olchanski]
  5735.  
  5736.   *) Use archaic setpgrp() interface on NeXT, which requires it [Brian
  5737.      Pinkerton]
  5738.  
  5739.   *) Suppress -Wall warning by casting const away in util.c [Aram Mirzadeh]
  5740.  
  5741.   *) Suppress -Wall warning by initializing variable in negotiation code
  5742.      [Tobias Weingartner]
  5743.  
  5744. Changes with Apache 0.8.12
  5745.  
  5746.   *) Doesn't pause three seconds after including a CGI script which is
  5747.      too slow to die off (this is done by not even trying to kill off
  5748.      subprocesses, including the SIGTERM/pause/SIGKILL routine, until
  5749.      after the entire document has been processed).  [Robert Thau]
  5750.  
  5751.   *) Doesn't do SSI if Options Includes is off.  (Ooops).  [David Robinson]
  5752.  
  5753.   *) Options IncludesNoExec allows inclusion of at least text/* [Roy Fielding]
  5754.  
  5755.   *) Allows .htaccess files to override <Directory> sections naming the
  5756.      same directory [David Robinson]
  5757.  
  5758.   *) Removed an efficiency hack in sub_req_lookup_uri which was
  5759.      causing certain extremely marginal cases (e.g., ScriptAlias of a
  5760.      *particular* index.html file) to fail.  [David Robinson]
  5761.  
  5762.   *) Doesn't log an error when the requested URI requires
  5763.      authentication, but no auth header line was supplied by the
  5764.      client; this is a normal condition (the client doesn't no auth is
  5765.      needed here yet).  [Robert Thau]
  5766.  
  5767.   *) Behaves more sanely when the name server loses its mind [Sean Welch]
  5768.  
  5769.   *) RFC931 code compiles cleanly on old BSDI releases [Randy Terbush]
  5770.  
  5771.   *) RFC931 code no longer passes out name of prior clients on current
  5772.      requests if the current request came from a server that doesn't
  5773.      do RFC931.  [David Robinson]
  5774.  
  5775.   *) Configuration script accepts "Module" lines with trailing whitespace.
  5776.      [Robert Thau]
  5777.  
  5778.   *) Cleaned up compiler warning from mod_access.c [Robert Thau]
  5779.  
  5780.   *) Cleaned up comments in mod_cgi.c [Robert Thau]
  5781.  
  5782. Changes with Apache 0.8.11
  5783.  
  5784.   *) Wildcard <Directory> specifications work.  [Robert Thau]
  5785.  
  5786.   *) Doesn't loop for buggy CGI on Solaris [Cliff Skolnick]
  5787.  
  5788.   *) Symlink checks (FollowSymLinks off, or SymLinkIfOwnerMatch) always check
  5789.      the file being requested itself, in addition to the directories leading
  5790.      up to it. [Robert Thau]
  5791.  
  5792.   *) Logs access failures due to symlink checks or invalid client address
  5793.      in the error log [Roy Fielding, Robert Thau]
  5794.  
  5795.   *) Symlink checks deal correctly with systems where lstat of
  5796.      "/path/to/some/link/" follows the link.  [Thau, Fielding]
  5797.  
  5798.   *) Doesn't reset DirectoryIndex to 'index.html' when
  5799.      other directory options are set in a .htaccess file.  [Robert Thau]
  5800.  
  5801.   *) Clarified init code and nuked bogus warning in mod_access.c
  5802.      [Florent Guillaume]
  5803.  
  5804.   *) Corrected several directives in sample srm.conf
  5805.      --- includes corrections to directory indexing icon-related directives
  5806.      (using unknown.gif rather than unknown.xbm as the DefaultIcon, doing
  5807.      icons for encodings right, and turning on AddEncoding by default).
  5808.      [Roy Fielding]
  5809.  
  5810.   *) Corrected descriptions of args to AddIcon and AddAlt in command table
  5811.      [James Cloos]
  5812.  
  5813.   *) INSTALL & README mention "contributed modules" directory [Brian
  5814.      Behlendorf]
  5815.  
  5816.   *) Fixed English in the license language...  "for for" --> "for".
  5817.      [Roy Fielding]
  5818.  
  5819.   *) Fixed ScriptAlias/Alias interaction by moving ScriptAlias handling to
  5820.      mod_alias.c, merging it almost completely with handling of Alias, and
  5821.      adding a 'notes' field to the request_rec which allows the CGI module
  5822.      to discover whether the Alias module has put this request through
  5823.      ScriptAlias (which it needs to know for back-compatibility, as the old
  5824.      NCSA code did not check Options ExecCGI in ScriptAlias directories).
  5825.      [Robert Thau]
  5826.  
  5827.  
  5828. Changes with Apache 0.8.10
  5829.  
  5830.   *) AllowOverride applies to the named directory, and not just
  5831.      subdirectories.  [David Robinson]
  5832.  
  5833.   *) Do locking for accept() exclusion (on systems that need it)
  5834.      using a special file created for the purpose in /usr/tmp, and
  5835.      not the error log; using the error log causes real problems
  5836.      if it's NFS-mounted; this is known to be the cause of a whole
  5837.      lot of "server hang" problems with Solaris.  [David Robinson;
  5838.      thanks to Merten Schumann for help diagnosing the problem].
  5839.  
  5840. Changes with Apache 0.8.9
  5841.  
  5842.   *) Compiles with -DMAXIMUM_DNS ---- ooops! [Henrik Mortensen]
  5843.  
  5844.   *) Nested includes see environment variables of the including document,
  5845.      for NCSA bug-compatibility (some sites have standard footer includes
  5846.      which try to print out the last-modified date).  [Eric Hagberg/Robert
  5847.      Thau]
  5848.  
  5849.   *) <!--exec cgi="/some/uri/here"--> always treats the item named by the
  5850.      URI as a CGI script, even if it would have been treated as something
  5851.      else if requested directly, for NCSA back-compatibility.  (Note that
  5852.      this means that people who know the name of the script can see the
  5853.      code just by asking for it).  [Robert Thau]
  5854.  
  5855.   *) New version of dbmmanage script included in support directory as
  5856.      dbmmanage.new.
  5857.  
  5858.   *) Check if scoreboard file couldn't be opened, and say so, rather
  5859.      then going insane [David Robinson]
  5860.  
  5861.   *) POST to CGI works on A/UX [Jim Jagielski]
  5862.  
  5863.   *) AddIcon and AddAlt commands work properly [Rob Hartill]
  5864.  
  5865.   *) NCSA server push works properly --- the Arena bug compatibility
  5866.      workaround, which broke it, is gone (use -DARENA_BUG_WORKAROUND
  5867.      if you still want the workaround).  [Rob Hartill]
  5868.  
  5869.   *) If client didn't submit any Accept-encodings, ignore encodings in
  5870.      content negotiation.  (NB this will all have to be reworked anyway
  5871.      for the new HTTP draft).  [Florent Guillaume]
  5872.  
  5873.   *) Don't dump core when trying to log timed-out requests [Jim Jagielski]
  5874.  
  5875.   *) Really honor CacheNegotiatedDocs [Florent Guillaume]
  5876.  
  5877.   *) Give Redirect priority over Alias, for NCSA bug compatibility
  5878.      [David Robinson]
  5879.  
  5880.   *) Correctly set PATH_TRANSLATED in all cases from <!--#exec cmd=""-->,
  5881.      paralleling earlier bug fix for CGI [David Robinson]
  5882.  
  5883.   *) If DBM auth is improperly configured, report a server error and don't
  5884.      dump core.
  5885.  
  5886.   *) Deleted FCNTL_SERIALIZED_ACCEPTS from conf.h entry for A/UX;
  5887.      it seems to work well enough without it (even in a 10 hits/sec
  5888.      workout), and the overhead for the locking under A/UX is
  5889.      alarmingly high (though it is very low on other systems).
  5890.      [Eric Hagberg]
  5891.  
  5892.   *) Fixed portability problems with mod_cookies.c [Cliff Skolnick]
  5893.  
  5894.   *) Further de-Berklize mod_cookies.c; change the bogus #include.  [Brian
  5895.      Behlendorf/Eric Hagberg]
  5896.  
  5897.   *) More improvements to default Configuration for A/UX [Jim Jagielski]
  5898.  
  5899.   *) Compiles clean on NEXT [Rob Hartill]
  5900.  
  5901.   *) Compiles clean on SGI [Robert Thau]
  5902.  
  5903. Changes with Apache 0.8.8
  5904.  
  5905.   *) SunOS library prototypes now never included unless explicitly
  5906.      requested in the configuration (via -DSUNOS_LIB_PROTOTYPES);
  5907.      people using GNU libc on SunOS are screwed by prototypes for the
  5908.      standard library.
  5909.  
  5910.      (Those who wish to compile clean with gcc -Wall on a standard
  5911.      SunOS setup need the prototypes, and may obtain them using
  5912.      -DSUNOS_LIB_PROTOTYPES.  Those wishing to use -Wall on a system
  5913.      with nonstandard libraries are presumably competent to make their
  5914.      own arrangements).
  5915.  
  5916.   *) Strips trailing '/' characters off both args to the Alias command,
  5917.      to make 'Alias /foo/ /bar/' work.
  5918.  
  5919. Changes with Apache 0.8.7
  5920.  
  5921.   *) Don't hang when restarting with a child from 'TransferLog "|..."' running
  5922.      [reported by David Robinson]
  5923.  
  5924.   *) Compiles clean on OSF/1 [David Robinson]
  5925.  
  5926.   *) Added some of the more recent significant changes (AddLanguage stuff,
  5927.      experimental LogFormat support) to CHANGES file in distribution root
  5928.      directory
  5929.  
  5930. Changes with Apache 0.8.6
  5931.  
  5932.   *) Deleted Netscape reload workaround --- it's in violation of HTTP specs.
  5933.      (If you actually wanted a conditional GET which bypassed the cache, you
  5934.      couldn't get it). [Reported by Roy Fielding]
  5935.  
  5936.   *) Properly terminate headers on '304 Not Modified' replies to conditional
  5937.      GETs --- no browser we can find cares much, but the CERN proxy chokes.
  5938.      [Reported by Cliff Skolnick; fix discovered independently by Rob Hartill]
  5939.  
  5940.   *) httpd -v doesn't call itself "Shambhala".  [Reported by Chuck Murcko]
  5941.  
  5942.   *) SunOS lib-function prototypes in conf.h conditionalized on __GNUC__,
  5943.      not __SUNPRO_C (they're needed to quiet gcc -Wall, but acc chokes on 'em,
  5944.      and older versions don't set the __SUNPRO_C preprocessor variable).  On
  5945.      all other systems, these are never used anyway.  [Reported by Mark Cox].
  5946.  
  5947.   *) Scoreboard file (/tmp/htstatus.*) no longer publically writable.
  5948.  
  5949. Changes with Apache 0.8.5
  5950.  
  5951.   *) Added last-minute configurable log experiment, as optional module
  5952.  
  5953.   *) Correctly set r->bytes_sent for HTTP/0.9 requests, so they get logged
  5954.      properly.  (One-line fix to http_protocol.c).
  5955.  
  5956.   *) Work around bogus behavior when reloading from Netscape.
  5957.      It's Netscape's bug --- for some reason they expect a request with
  5958.      If-modified-since: to not function as a conditional GET if it also
  5959.      comes with Pragma: no-cache, which is way out of line with the HTTP
  5960.      spec (according to Roy Fielding, the redactor).
  5961.  
  5962.   *) Added parameter to set maximum number of server processes.
  5963.  
  5964.   *) Added patches to make it work on A/UX.  A/UX is *weird*.  [Eric Hagberg]
  5965.  
  5966.   *) IdentityCheck bugfix [Chuck Murcko].
  5967.  
  5968.   *) Corrected cgi-src/Makefile entry for new imagemap script.  [Alexei Kosut]
  5969.  
  5970.   *) More sample config file corrections; add extension to AddType for
  5971.      *.asis, move AddType generic description to its proper place, and
  5972.      fix miscellaneous typos. [ Alexei Kosut ]
  5973.  
  5974.   *) Deleted the *other* reference to the regents from the Berkeley
  5975.      legal disclaimer (everyplace).
  5976.  
  5977.   *) Nuked Shambhala name from src/README; had already cleaned it out
  5978.      of everywhere else.
  5979.  
  5980. Changes with Apache 0.8.4
  5981.  
  5982.   *) Changes to server-pool management parms --- renamed current
  5983.      StartServers to MinSpareServers, created separate StartServers
  5984.      parameter which means what it says, and renamed MaxServers to
  5985.      MaxSpareServers (though the old name still works, for NCSA 1.4
  5986.      back-compatibility).  The old names were generally regarded as
  5987.      too confusing.  Also altered "docs" in sample config files.
  5988.  
  5989.   *) More improvements to default config files ---
  5990.      sample directives (commented out) for XBitHack, BindAddress,
  5991.      CacheNegotiatedDocs, VirtualHost; decent set of AddLanguage
  5992.      defaults, AddTypes for send-as-is and imagemap magic types, and
  5993.      improvements to samples for DirectoryIndex [Alexei Kosut]
  5994.  
  5995.   *) Yet more improvements to default config files --- changes to
  5996.      Alexei's sample AddLanguage directives, and sample LanguagePriority
  5997.      [ Florent Guillaume ]
  5998.  
  5999.   *) Set config file locations properly if not set in httpd.conf
  6000.      [ David Robinson ]
  6001.  
  6002.   *) Don't escape URIs in internal redirects multiple times; don't
  6003.      do that when translating PATH_INFO to PATH_TRANSLATED either.
  6004.      [ David Robinson ]
  6005.  
  6006.   *) Corrected spelling of "Required" in 401 error reports [Andrew Wilson]
  6007.  
  6008. Changes with Apache 0.8.3
  6009.  
  6010.   *) Edited distribution README to *briefly* summarize installation
  6011.      procedures, and give a pointer to the INSTALL file in the src/
  6012.      directory.
  6013.  
  6014.   *) Upgraded imagemap script in cgi-bin to 1.8 version from more
  6015.      recent NCSA distributions.
  6016.  
  6017.   *) Bug fix to previous bug fix --- if .htaccess file and <Directory>
  6018.      exist for the same directory, use both and don't segfault.  [Reported
  6019.      by David Robinson]
  6020.  
  6021.   *) Proper makefile dependencies [David Robinson]
  6022.  
  6023.   *) Note (re)starts in error log --- reported by Rob Hartill.
  6024.  
  6025.   *) Only call no2slash() after get_path_info() has been done, to
  6026.      preserve multiple slashes in the PATH_INFO [NCSA compatibility,
  6027.      reported by Andrew Wilson, though this one is probably a real bug]
  6028.  
  6029.   *) Fixed mod_imap.c --- relative paths with base_uri referer don't
  6030.      dump core when Referer is not supplied. [Randy Terbush]
  6031.  
  6032.   *) Lightly edited sample config files to refer people to our documentation
  6033.      instead of NCSA's, and to list Rob McCool as *original* author (also
  6034.      deleted his old, and no doubt non-functional email address).  Would be
  6035.      nice to have examples of new features...
  6036.  
  6037. Changes with Apache 0.8.2
  6038.  
  6039.   *) Added AddLanuage code [Florent Guillaume]
  6040.  
  6041.   *) Don't say "access forbidden" when a CGI script is not found.  [Mark Cox]
  6042.  
  6043.   *) All sorts of problems when MultiViews finds a directory.  It would
  6044.      be nice if mod_dir.c was robust enough to handle that, but for now,
  6045.      just punt.  [reported by Brian Behlendorf]
  6046.  
  6047.   *) Wait for all children on restart, to make sure that the old socket
  6048.      is gone and we can reopen it.  [reported by Randy Terbush]
  6049.  
  6050.   *) Imagemap module is enabled in default Configuration
  6051.  
  6052.   *) RefererLog and UserAgentLog modules properly default the logfile
  6053.      [Randy Terbush]
  6054.  
  6055.   *) Mark Cox's mod_cookies added to the distribution as an optional
  6056.      module (commented out in the default Configuration, and noted as
  6057.      an experiment, along with mod_dld). [Mark Cox]
  6058.  
  6059.   *) Compiles on ULTRIX (a continuing battle...). [Robert Thau]
  6060.  
  6061.   *) Fixed nasty bug in SIGTERM handling [reported by Randy Terbush]
  6062.  
  6063.   *) Changed "Shambhala" to "Apache" in API docs. [Robert Thau]
  6064.  
  6065.   *) Added new, toothier legal disclaimer. [Robert Thau; copied from BSD
  6066.      license]
  6067.  
  6068. Changes with Apache 0.8.1
  6069.  
  6070.   *) New imagemap module [Randy Terbush]
  6071.  
  6072.   *) Replacement referer log module with NCSA-compatible RefererIgnore
  6073.      [Matthew Gray again]
  6074.  
  6075.   *) Don't mung directory listings with very long filenames.
  6076.      [Florent Guillaume]
  6077.  
  6078. Changes with Apache 0.8.0 (nee Shambhala 0.6.2):
  6079.  
  6080.   *) New config script.  See INSTALL for info.  [Robert Thau]
  6081.  
  6082.   *) Scoreboard mechanism for regulating the number of extant server
  6083.      processes.  MaxServers and StartServers defaults are the same as
  6084.      for NCSA, but the meanings are slightly different.  (Actually,
  6085.      I should probably lower the MaxServers default to 10).
  6086.  
  6087.      Before asking for a new connection, each server process checks
  6088.      the number of other servers which are also waiting for a
  6089.      connection.  If there are more than MaxServers, it quietly dies
  6090.      off.  Conversely, every second, the root, or caretaker, process
  6091.      looks to see how many servers are waiting for a new connection;
  6092.      if there are fewer than StartServers, it starts a new one.  This
  6093.      does not depend on the number of server processes already extant.
  6094.      The accounting is arranged through a "scoreboard" file, named
  6095.      /tmp/htstatus.*, on which each process has an independent file
  6096.      descriptor (they need to seek without interference).
  6097.  
  6098.      The end effect is that MaxServers is the maximum number of
  6099.      servers on an *inactive* server machine, but more will be forked
  6100.      off to handle unusually heavy loads (or unusually slow clients);
  6101.      these will die off when they are no longer needed --- without
  6102.      reverting to the overhead of full forking operation.  There is a
  6103.      hard maximum of 150 server processes compiled in, largely to
  6104.      avoid forking out of control and dragging the machine down.
  6105.      (This is arguably too high).
  6106.  
  6107.      In my server endurance tests, this mechanism did not appear to
  6108.      impose any significant overhead, even after I forced it to put the
  6109.      scoreboard file on a normal filesystem (which might have more
  6110.      overhead than tmpfs).  [Robert Thau]
  6111.  
  6112.   *) Set HTTP_FOO variables for SSI <!--#exec cmd-->s, not just CGI scripts.
  6113.      [Cliff Skolnick]
  6114.  
  6115.   *) Read .htaccess files even in directory with <Directory> section.
  6116.      (Former incompatibility noted on mailing list, now fixed). [Robert
  6117.      Thau]
  6118.  
  6119.   *) "HEAD /" gives the client a "Bad Request" error message, rather
  6120.      than trying to send no body *and* no headers.  [Cliff Skolnick].
  6121.  
  6122.   *) Don't produce double error reports for some very obscure cases
  6123.      mainly involving auth configuration (the "all modules decline to
  6124.      handle" case which is a sure sign of a server bug in most cases,
  6125.      but also happens when authentication is badly misconfigured).
  6126.      [Robert Thau]
  6127.  
  6128.   *) Moved FCNTL_SERIALIZED_ACCEPT defines into conf.h (that's what
  6129.      it's *for*, and this sort of thing really shouldn't be cluttering
  6130.      up the Makefile). [Robert Thau]
  6131.  
  6132.   *) Incidental code cleanups in http_main.c --- stop dragging
  6133.      sa_client around; just declare it where used.  [Robert Thau]
  6134.  
  6135.   *) Another acc-related fix.  (It doesn't like const char
  6136.      in some places...). [Mark Cox]
  6137.  
  6138. Changes with 0.6.1
  6139.  
  6140.   *) Fixed auth_name-related typos in http_core.c [Brian Behlendorf]
  6141.      Also, fixed auth typo in http_protocol.c unmasked by this fix.
  6142.  
  6143.   *) Compiles clean with acc on SunOS [Paul Sutton]
  6144.  
  6145.   *) Reordered modules in modules.c so that Redirect takes priority
  6146.      over ScriptAlias, for NCSA bug-compatibility [Rob Hartill] ---
  6147.      believe it or not, he has an actual site with a ScriptAlias and
  6148.      a Redirect declared for the *exact same directory*.  Even *my*
  6149.      compatibility fetish wouldn't motivate me to fix this if the fix
  6150.      required any effort, but it doesn't, so what the hey.
  6151.  
  6152.   *) Fixed to properly default several server_rec fields for virtual
  6153.      servers from the corresponding fields in the main server_rec.
  6154.      [Cliff Skolnick --- 'port' was a particular irritant].
  6155.  
  6156.   *) No longer kills off nph- child processes before they are
  6157.      finished sending output. [Matthew Gray]
  6158.  
  6159. Changes with 0.6.0
  6160.  
  6161.   *) Two styles of timeout --- hard and soft.  soft_timeout()s just put
  6162.      the connection to the client in an "aborted" state, but otherwise
  6163.      allow whatever handlers are running to clean up.  hard_timeout()s
  6164.      abort the request in progress completely; anything not tied to some
  6165.      resource pool cleanup will leak.  They're still around because I
  6166.      haven't yet come up with a more elegant way of handling
  6167.      timeouts when talking to something that isn't the client.  The
  6168.      default_handler and the dir_handler now use soft timeouts, largely
  6169.      so I can test the feature.  [Robert Thau]
  6170.  
  6171.   *) TransferLog "| my_postprocessor ..." seems to be there.  Note that
  6172.      the case of log handlers dying prematurely is probably handled VERY
  6173.      gracelessly at this point, and if the logger stops reading input,
  6174.      the server will hang.  (It is known to correctly restart the
  6175.      logging process on server restart; this is (should be!) going through
  6176.      the same SIGTERM/pause/SIGKILL routine used to ding an errant CGI
  6177.      script).  [Robert Thau]
  6178.  
  6179.   *) asis files supported (new module).  [Robert Thau]
  6180.  
  6181.   *) IdentityCheck code is compiled in, but has not been tested.  (I
  6182.      don't know anyone who runs identd). [Robert Thau]
  6183.  
  6184.   *) PATH_INFO and PATH_TRANSLATED are not set unless some real PATH_INFO
  6185.      came in with the request, for NCSA bug-compatibility. [Robert Thau]
  6186.  
  6187.   *) Don't leak the DIR * on HEAD request for a directory. [Robert Thau]
  6188.  
  6189.   *) Deleted the block_alarms() stuff from dbm_auth; no longer necessary,
  6190.      as timeouts are not in scope. [Robert Thau]
  6191.  
  6192.   *) quoted-string args in config files now handled correctly (doesn't drop
  6193.      the last character). [Robert Thau; reported by Randy Terbush]
  6194.  
  6195.   *) Fixed silly typo in http_main.c which was suddenly fatal in HP-UX.
  6196.      How the hell did it ever work? [Robert Thau; reported by Rob Hartill]
  6197.  
  6198.   *) mod_core.c --- default_type returns DEFAULT_TYPE (the compile-time
  6199.      default default type); the former default default behavior when all
  6200.      type-checkers defaulted had been a core dump.  [Paul Sutton]
  6201.  
  6202.   *) Copy filenames out of the struct dirent when indexing
  6203.      directories.  (On Linux, readdir() returns a pointer to the same
  6204.      memory area every time).  Fix is in mod_dir.c.  [Paul Sutton]
  6205.  
  6206. Changes with 0.5.3 [not released]
  6207.  
  6208.   *) Default response handler notes "file not found" in the error log,
  6209.      if the file was not found.  [Cliff Skolnick].
  6210.  
  6211.   *) Another Cliff bug --- "GET /~user" now properly redirects (the userdir
  6212.      code no longer sets up bogus PATH_INFO which fakes out the directory
  6213.      handler). [Cliff Skolnick]
  6214.  
  6215. Changes with 0.5.2
  6216.  
  6217.   *) Changes to http_main.c --- root server no longer plays silly
  6218.      games with SIGCHLD, and so now detects and replaces dying
  6219.      children.  Child processes just die on SIGTERM, without taking
  6220.      the whole process group with them.  Potential problem --- if any
  6221.      child process refuses to die, we hang in restart.
  6222.      MaxRequestsPerChild may still not work, but it certainly works
  6223.      better than it did before this!  [Robert Thau]
  6224.  
  6225.   *) mod_dir.c bug fixes: ReadmeName and HeaderName
  6226.      work (or work better, at least); over-long description lines
  6227.      properly terminated. [Mark Cox]
  6228.  
  6229.   *) http_request.c now calls unescape_url() more places where it
  6230.      should [Paul Sutton].
  6231.  
  6232.   *) More directory handling bugs (reported by Cox)
  6233.      Parent Directory link is now set correctly. [Robert Thau]
  6234.  
  6235. Changes with 0.5.1: [Hopefully complete]                  10 Apr 1995
  6236.  
  6237.   *) Generalized cleanup interface in alloc.c --- any function can be
  6238.      registered with alloc.c as a cleanup for a resource pool;
  6239.      tracking of files and file descriptors has been reimplemented in
  6240.      terms of this interface, so I can give it some sort of a test.
  6241.      [Robert Thau]
  6242.  
  6243.   *) More changes in alloc.c --- new cleanup_for_exec() function,
  6244.      which tracks down and closes all file descriptors which have been
  6245.      registered with the alloc.c machinery before the server exec()s a
  6246.      child process for CGI or <!--#exec-->.  CGI children now get
  6247.      started with exactly three file descriptors open.  Hopefully,
  6248.      this cures the problem Rob H. was having with overly persistent
  6249.      CGI connections. [Robert Thau]
  6250.  
  6251.   *) Mutual exclusion around the accept() in child_main() --- this is
  6252.      required on at least SGI, Solaris and Linux, and is #ifdef'ed in
  6253.      by default on those systems only (-DFCNTL_SERIALIZED_ACCEPT).
  6254.      This uses fcntl(F_SETLK,...) on the error log descriptor because
  6255.      flock() on that descriptor won't work on systems which have BSD
  6256.      flock() semantics, including (I think) Linux 1.3 and Solaris.
  6257.  
  6258.      This does work on SunOS (when the server is idle, only one
  6259.      process in the pool is waiting on accept()); it *ought* to work
  6260.      on the other systems. [Robert Thau]
  6261.  
  6262.   *) FreeBSD and BSDI portability tweaks [Chuck Murcko]
  6263.  
  6264.   *) sizeof(*sa_client) bugfix from [Rob Hartill]
  6265.  
  6266.   *) pstrdup(..., NULL) returns NULL, [Randy Terbush]
  6267.  
  6268.   *) block_alarms() to avoid leaking the DBM* in dbm auth (this should
  6269.      be unnecessary if I go to the revised timeout-handling scheme).
  6270.      [Robert Thau]
  6271.  
  6272.   *) For NCSA bug-compatibility, set QUERY_STRING env var (to a null
  6273.      string) even if none came in with the request.  [Robert Thau]
  6274.  
  6275.   *) CHANGES file added to distribution ;-).
  6276.  
  6277. Changes with 0.4                                          02 Apr 1995
  6278.  
  6279.   *) Patches by Brian Behlendorf, Andrew Wilson, Robert Thau,
  6280.      and Rob Hartill.
  6281.  
  6282. Changes with 0.3                                          24 Mar 1995
  6283.  
  6284.   *) Patches by Robert Thau, David Robinson, Rob Hartill, and
  6285.      Carlos Varela
  6286.  
  6287. Changes with 0.2                                          18 Mar 1995
  6288.  
  6289.   *) Based on NCSA httpd 1.3 by Rob McCool and patches by CERT,
  6290.      Roy Fielding, Robert Thau, Nicolas Pioch, David Robinson,
  6291.      Brian Behlendorf, Rob Hartill, and Cliff Skolnick
  6292.